Тема: AS3 + GetVariable
Показать сообщение отдельно
Старый 28.06.2008, 02:58
alexcon314 вне форума Посмотреть профиль Отправить личное сообщение для alexcon314 Найти все сообщения от alexcon314
  № 12  
Ответить с цитированием
alexcon314
listener

модератор форума
Регистрация: Jun 2006
Сообщений: 3,260
Записей в блоге: 28
Отправить сообщение для alexcon314 с помощью ICQ
Цитата:
Сообщение от IYAKOV
у меня получается, что при Любом вызове ExternalInterface.call, приложение обрабатывает событие axShockwaveFlash1_FlashCall.
Именно. Общение идет "реквестами" (request) - это xml примерно такого вида
Код:
<invoke name="sayHello" returntype="xml"><arguments><string>browser</string></arguments></invoke>
Вызывающий код во флэше:
Код:
ExternalInterface.call("sayHello", "browser");
В реквест можно запихать и Number и Array и Object.. в xml все будет разложено по полочкам-нодам. Осталось его распарсить....
Код:
//C# - код
private void axShockwaveFlash1_FlashCall(object sender, AxShockwaveFlashObjects._IShockwaveFlashEvents_FlashCallEvent e)
        {
            
            XmlDocument document = new XmlDocument();
            document.LoadXml(e.request);
            XmlNode invoke = document.FirstChild;
            string func = invoke.Attributes.GetNamedItem("name").Value;
            XmlNodeList list = document.GetElementsByTagName("arguments");
            string arg = list[0].FirstChild.InnerText;
            MessageBox.Show(e.request);
            textBox.Text = "Function invoked: "+ func + ", argument: " + arg;
            
        }
... и, используя конструкцию типа swich(){case...} вызвать нужную функцию в оболочке.
Цитата:
Сообщение от IYAKOV
Значит никак вызвать какую либо функцию из внешено приложения нельзя???
си-подобные языки, в т.ч. и C# не поддерживают такую фичу как вывзов функции по string-имени, получаемому из string-переменной. (динамическая типизация, кажется, это называется). Потому - вызов через свич. Можете придумать что-то поэлегантнее, если хочется.
Вызов каллбак-функции во флэше из оболочки тоже не представляет трудностей. Опять же, в качестве аргумента передавайте xml-request.
______________________________

По поводу GetVariable. Значение поля AS-класса я не пробовал вытаскивать, но переменная прикрепленная к клипу на сцене (свойство клипа) вытаскивается легко (в AS2): GetVariable("mc.my_varproperty"); На AS3 нет возможности проверить.

За безопасность не скажу, у меня все работало без дополнинтельных телодвижений. Просто впихивается флэш-контрол на форму и понеслось.


Последний раз редактировалось alexcon314; 28.06.2008 в 03:13.