2012-04-27 5 views
0

Я пытаюсь вызвать метод actioncript из javascript, но он говорит, что функция flashObj.method() не является функцией. Я прописал этот метод внутри подмодуля моего flash-объекта. Так как вызывать методы вспомогательных модулейвызов метода actionscript из javascript

ответ

0

Посмотрите на ExternalInterface.addCallback()

Я абсолютно уверен, что это работает только для методов, которые принадлежат к корневому документу (или классу документа), а не методы других классов.

+0

Но это сработало для меня, когда я вызываю метод динамически загружаемого модуля –

0

Как и выше ответ заявляет, что вам нужно использовать

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")