![]() |
AS3 + GetVariable
Вобщем не могу снять JS`ом переменные из ролика, явно что-то изменилось.
В ролике в корне лежит movieClip с именем test и своим собственным классом (TestClass) в котором: Код:
class TestClass extends MovieClip{var testVar=flashObject.GetVariable('test.testVar'); В этоге ругается - мол Unspecified Error |
А чем EhternalInterface не устроил?
|
а я не знал что это такое, вот теперь читаю. (eXternal)
|
упс, сорри, транслит %)
|
А и все-таки: какой полный путь переменной в АS3?
Да, подскажите как мне быть: Я вставил флеш объект в формочку(WinForms,c#) и мне нужно произвести некие манипуляции с данными находящимися во флешке. Дело в том, что сама флешка не знает, когда ей это потребуется. Как тогда поучить доступ в переменным если не через GetVariable? И еще вопросик: как вызвать из Флешки функцию находящуюсяя во внешнем приложении?(таже WinForm) ExternalInterface почему-то не работает. Просто ничего не происходит... А через fscommand писать не очень хочется. Есть только одна функция и вней куча ифоф не смотрится о! нашел.. "Note: If you are publishing for Flash Player 8 or later, the ExternalInterface class provides better functionality for communication between ActionScript and VisualBasic, Visual C++, or other programs that can host ActiveX controls." Но все равно не понял, почему не работает Код:
package Код:
private void Form1_Load(object sender, System.EventArgs e)вот еще было написано, что нужно flash.system.Security.allowDomain(sourceDomain) написать. Но у меня просто приложение! какой может быть домен? |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
у меня получается, что при Любом вызове ExternalInterface.call, приложение обрабатывает событие axShockwaveFlash1_FlashCall. Значит никак вызвать какую либо функцию из внешено приложения нельзя??? с использованием javascript все работает. А тут почему-то нет. |
Не подскажу, я не писал таких вещей. Мануал точно есть по этому делу.
Опишите событие, обработайте его. |
IYAKOV
Ща нет мануала под рукой но у ExternalInterface есть два метода: 1. call("myFunction","param") вызывает у яваскрита функчию myFunction("param"); 2. чето типа setCallBack("NameInJS", Funcion ); После этого в JavaScript скрипте создаеться функция NameInJS. Погугли про это в сети много чего написано. Ещё один маленький нюанс, необходимо разрешить использование ExternalInterface. Для этого в теге HTML swLifeConnect = true. Гугли в общем :) Что забавно у меня этот интерфейс работает только по сети... |
Цитата:
Код:
<invoke name="sayHello" returntype="xml"><arguments><string>browser</string></arguments></invoke>Код:
ExternalInterface.call("sayHello", "browser");Код:
//C# - кодЦитата:
Вызов каллбак-функции во флэше из оболочки тоже не представляет трудностей. Опять же, в качестве аргумента передавайте xml-request. ______________________________ По поводу GetVariable. Значение поля AS-класса я не пробовал вытаскивать, но переменная прикрепленная к клипу на сцене (свойство клипа) вытаскивается легко (в AS2): GetVariable("mc.my_varproperty"); На AS3 нет возможности проверить. За безопасность не скажу, у меня все работало без дополнинтельных телодвижений. Просто впихивается флэш-контрол на форму и понеслось. |
Цитата:
|
Про каллбаки:
Код:
//C# вызывающий код |
Цитата:
Цитата:
Факт: Если запросить переменную из флеш-объекта - будет ошибка: Код:
axShockwaveFlash1.GetVariable("a");Код:
axShockwaveFlash1.SetVariable("a",0xDEADBEEF); |
С классами все аналогично, если переменная-поле экземпляра класса инициализировалась - вы ее получите, по тому же синтаксису. (Проверял.)
Цитата:
Пишите во флэше этакий "трэйс-снапшот" (for..in) всех переменых в формате "адрес-значение", вызывайте его и отдавайте в оболочку результат. Цитата:
|
Цитата:
|
Действительно, в AS3 GetVariable не вытаскивает так просто переменные из полей классов. Причина, видимо, кроется в отсутствии рута. Впрочем, я сильно этот вопрос не пробивал. Нашел более логичный и естественный, на мой взгляд, способ.
Просто в классе (в любом, и в DocumentClass в т.ч.) делаются обычные get(set если хотите) методы. И их надо зарегить ExternalInterface.addCallback'ом, чтобы они были доступны со стороны оболочки. Модификаторы доступа, видимо, не имеют значения в этом случае. В частности, приват-метод будет все равно доступен из оболочки после регистрации его как Callback. Код:
//AS3 |
Цитата:
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Цитата:
|
Мы не очень жалуем некропосты.
Пожалуйста, создавайте новые темы со ссылкой на существующие. От себя: GetVariable() работает только AVM1. Если докажете обратное, то создайте тему со ссылкой на этот пост. |
| Часовой пояс GMT +4, время: 15:35. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.