Я пытаюсь вызвать метод actionscript из javascript, но он говорит, что flashObj.method() не является функцией. Я объявил этот метод внутри подмодуля моего флеш-объекта. Итак, как вызывать методы подмодулей
вызов метода actionscript из javascript
Ответы (3)
Вот работающий пример с исходным кодом.
http://www.redcodelabs.com/2012/04/calling-actionscript-method-from-javascript/
Вам нужно взглянуть на класс ExternalInterface. Все, что вам нужно, есть. Также вам нужно быть осторожным с обработкой ошибок с обеих сторон (AS3 или JS).
См. ExternalInterface.addCallback()
а>
Я совершенно уверен, что это работает только для методов, принадлежащих корневому каталогу документа (или классу документа), а не для методов других классов.
Как указано выше, вам нужно использовать
ExternalInterface.addCallback("nameOfFunctionAsCalledFromJS",nameOfFunctionInFlash);
Я рекомендую использовать разные имена для двух функций. Вы можете использовать это, чтобы сделать общедоступными даже функции разных классов, при условии, что они общедоступны. Однако, предполагая, что ваши модули являются загружаемыми извне SWF-файлами, когда вы загружаете свои SWF-файлы в приложение, вам нужно использовать LoaderContext и устанавливать модули в том же ApplicationDomain и SecurityDomain, что и приложение, которое их загружает:
var lc:LoaderContext = new LoaderContext(true,ApplicationDomain.currentDomain,SecurityDomain.currentDomain);
loader.load(urlRequest,lc);
Кроме того, вам нужно разрешить доступ из JS к вашему приложению (тому, которое загружает модули), и поэтому вам нужно вызывать allowDomain перед любыми вызовами из JS:
Security.allowDomain("yourdomain");
Security.allowInsecureDomain("yourdomai")