Я пытаюсь вызвать метод actioncript из javascript, но он говорит, что функция flashObj.method() не является функцией. Я прописал этот метод внутри подмодуля моего flash-объекта. Так как вызывать методы вспомогательных модулейвызов метода actionscript из javascript
ответ
Вот беговой пример с исходным кодом.
http://www.redcodelabs.com/2012/04/calling-actionscript-method-from-javascript/
Вы должны взглянуть в класс ExternalInterface. Все, что вам нужно, есть. Также вам нужно быть осторожным с обработкой ошибок с обеих сторон (AS3 или JS)
Посмотрите на ExternalInterface.addCallback()
Я абсолютно уверен, что это работает только для методов, которые принадлежат к корневому документу (или классу документа), а не методы других классов.
Как и выше ответ заявляет, что вам нужно использовать
ExternalInterface.addCallback("nameOfFunctionAsCalledFromJS",nameOfFunctionInFlash);
Я рекомендую использовать разные имена для 2 функций. Вы можете использовать это, чтобы публично доступные четные функции разных классов при условии, что они являются общедоступными. Однако, если предположить, что ваши модули внешне загружены СФБ, когда вы загрузите ваш СФБ в приложение вам нужно использовать 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")
Но это сработало для меня, когда я вызываю метод динамически загружаемого модуля –