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