从javascript调用actionscript方法

时间:2012-04-27 06:16:47

标签: javascript actionscript-3 flex externalinterface

我试图从javascript调用actionscript方法,但它说flashObj.method()不是函数。我已经在flash对象的子模块中声明了这个方法。那么如何调用子模块的方法

3 个答案:

答案 0 :(得分:0)

查看 ExternalInterface.addCallback()

我很确定这只适用于属于文档根目录(或文档类)的方法,而不适用于其他类的方法。

答案 1 :(得分:0)

如上所述,您需要使用

ExternalInterface.addCallback("nameOfFunctionAsCalledFromJS",nameOfFunctionInFlash);

我建议为这两个功能使用不同的名称。如果它们是公共的,您可以使用它来公开提供不同类的功能。但是,假设您的模块是外部加载的swfs,当您将swfs加载到应用程序时,您需要使用LoaderContext并将模块设置在与加载它们的应用程序相同的ApplicationDomain和SecurityDomain中:

var lc:LoaderContext = new LoaderContext(true,ApplicationDomain.currentDomain,SecurityDomain.currentDomain);
loader.load(urlRequest,lc);

此外,您需要允许从JS访问您的应用程序(加载模块的应用程序),因此您需要在来自JS的任何调用之前调用allowDomain:

Security.allowDomain("yourdomain");
Security.allowInsecureDomain("yourdomai")

答案 2 :(得分:0)

这是一个包含源代码的运行示例。

http://www.redcodelabs.com/2012/04/calling-actionscript-method-from-javascript/

您需要查看ExternalInterface类。你需要的就是那里。 另外,您需要注意双方的错误处理(AS3或JS)