Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Delphi и Flash. Обмен данными (http://www.flasher.ru/forum/showthread.php?t=118919)

LameAS3 07.12.2008 17:22

Delphi и Flash. Обмен данными
 
Приветствую форумчан! :victory:

Есть задача: замутить визуальный интерфейс в виде флешки, а вычислительные и другие механизмы разместить в коде Делфи.
Как вставить Flash в Delphi я и так знаю: импорт АктивИкс, бла-бла-бла и так далее. Этой начальной инфой весь инет загажен. Меня лишь мучают вопросы о передачи данных между Флешкой и Программой содержащую ее(делфи форма т.е.).
Метод Flash -> Delphi мне извесен - это fsCommand.
А вот метод Delphi -> Flash мне не совсем ясен, а именно то как действуют SetVariable и GetVariable в ActionScript 3.0? Ну вот к примеру почитав это, пришел к выводу что можно делать вот так:
В swf-ролике находится Dynamic Text с именем dtext. В делфи пытаюсь такое сделать
Код:

Memo1.Text:=Flash.GetVariable('dtext.text');
На что мне при выполнении программы выдаются окна с матами и ругательствами.
Вроде на вашем же форуме читал, что для всего этого лучше в AS3 использовать ExternalInterface, но везде примеры показаны для JS а как их реализовать в Delphi - не пойму smile

Помогите пожалуйста, ребята, очень надо

-----------------

Ответ найден:
Спасибо за ссылочку Rzer ^_^
Привожу пример так, как сделал его я.

Во флеш, в AS3, в рут классе пишем примерно такое:
Код AS3:

package  {
        import flash.display.Sprite;
        import flash.external.ExternalInterface;
 
        public class MainClass extends Sprite {
                public function MainClass() {
                        ExternalInterface.addCallback("getFromDelphi", getFromDelphi);
                        ExternalInterface.call("sendToDelphi", "Delphi, Hello");
                }
                public function getFromDelphi(val:String):void {
                        dtext.text = val; // это в ролике у меня лежит Динамический текст с именем "dtext"
                }               
        }       
}

На форму в Delphi кидаем Flash проигрываетль в виде ActiveX(я его обозвал просто Flash) и пишем такое:
Код:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Flash.Movie:= ExtractFilePath(Application.ExeName)+'Untitled-1.swf';
end;
//***//
procedure TForm1.FlashFlashCall(ASender: TObject; const request: WideString);
begin
  showmessage(request);
  Flash.CallFunction('<invoke name="getFromDelphi"><arguments><string>Hi, Flash</string></arguments></invoke>');
end;

При запуске программы мы увидим такое сообщение:
Цитата:

<invoke name="sendToDelphi" returntype="xml"><arguments><string>Delphi, Hello</string></arguments></invoke>

VovkaMorkovka1 07.12.2008 17:50

Поисчи в примерах от адоба, у них реализован сабжевый механизм, с помощью С# правда, но .NET он и в африке .NET

silin 07.12.2008 18:48

глянь еще http://www.flasher.ru/forum/showthread.php?t=114163

LameAS3 07.12.2008 19:07

VovkaMorkovka1, а где эти примеры адобовские?

VovkaMorkovka1 07.12.2008 20:06

Цитата:

Сообщение от LameAS3 (Сообщение 782136)
VovkaMorkovka1, а где эти примеры адобовские?

Ну раз примеры адобовские, то логично предположить, что находятся они на сайте адоба :) www.adobe.com и далее поиск :)

Rzer 07.12.2008 20:31

http://atflash.ru/2008/11/externalin...e-visualbasic/ для vb. Для дельфи думаю аналогично.

LameAS3 07.12.2008 20:53

VovkaMorkovka1
1) это ясень пень, что Адобовский примеры не на Майкрософт лежат =Р
2) уже нашел эти примеры))

Rzer
изучаю документ....

Добавлено через 16 минут
Rzer
Большое тебе СПАСИБИЩЕ!!
Это кАкраз то что я искал!!! Все работает!

В первом топе опишу тоже самое, но в Delphi, чтобы такие же как я нашди решение для граблей своих

LameAS3 19.12.2008 17:34

Так, теперь у меня есть маленький вопросик:
А как передать во Флэш-функцию несколько параметров?

VovkaMorkovka1 19.12.2008 20:28

опять - же кури примеры

dhk 07.01.2009 01:53

Доброго времени суток.
перерыл всё что мог и никак не найду ответа на свой вопрос. в этой теме как бы он затронут, но применить к своему ничего не смог. сам вопрос.
Есть какой-то swf файл (написан не мною и грузится на страничку), отображает какие-то данные. Пишу приложение на delphi в котором загружаю эту флешку и налажива обмен и управление swf файлом с моего приложения.
ShockwaveFlash.SetVariable, ShockwaveFlash.GetVariable и т.п. работает отлично, но вот с функциями проблема.
ShockwaveFlash.CallFunction - ни в какую.. не хочет работать. на все попытки выдает сообщение "Неопознанная ошибка".
Поиски ответа привели меня максимум к подобным вопросам, на который были ответы "Ты наверное перерыл весь инет и ничего не нашел, а заставить работать так и не удалось?"

Вот для наглядности код флешки. Есть какая-то функция
Код:

function newfunc(str)
{
    _root.name = str;
}

Как передать параметер и вызвать эту функцию в делфе. по идее должно быть все с помощью
ShockwaveFlash.CallFunction()
других способов не вижу, может кто делал другим способом?


Часовой пояс GMT +4, время: 05:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.