0

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

4

3 回答 3

0

看着 ExternalInterface.addCallback()

我相当确定这仅适用于属于文档根(或文档类)的方法,而不适用于其他类的方法。

于 2012-04-27T06:24:13.670 回答
0

如上答案所述,您需要使用

ExternalInterface.addCallback("nameOfFunctionAsCalledFromJS",nameOfFunctionInFlash);

我建议为这 2 个函数使用不同的名称。您可以使用它来公开不同类的功能,只要它们是公共的。但是,假设您的模块是外部加载的 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")
于 2012-04-27T07:47:19.803 回答
0

这是一个带有源代码的运行示例。

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

您需要查看 ExternalInterface 类。你需要的一切都在那里。此外,您需要注意双方的错误处理(AS3 或 JS)

于 2012-04-27T09:05:06.787 回答