ExternalInterface addCallback多次失败

时间:2013-05-17 01:23:48

标签: javascript jquery wordpress actionscript-2 externalinterface

我正试图在Wordpress网页和一个Actionscript 2 Flash电影中互相交谈。这次尝试失败了。在每次尝试调用我为其设置回调的函数时,我在浏览器错误控制台中得到“.....不是函数”(我使用的是Firefox 20)。

以下是设置方式:

该页面有点不寻常,是一个带有内联javascript的Wordpress页面。主javascript是一个加载flash对象的jQuery.ready()代码块(这样做可以使URL中的GET参数传递到flash中)。一旦加载,就会有一个链接:

<a href="javascript:jQuery('#fmap')[0].setRegion('regiona');">Region A</a>

与此同时,flash对象具有以下功能:

import flash.external.ExternalInterface;
System.security.allowDomain("thisdomain.com");   // the domain on which the flash is hosted
ExternalInterface.addCallback("setRegion", null, switchZone);  //switchZone is the function's internal name

flash的容器将allowScriptAccess设置为“always”,我可以确认jQuery语句是否正在击中正确的目标。但是,当调试flash对象时,addCallback返回false-表示失败。任何人都有什么想法可以发生什么?

2 个答案:

答案 0 :(得分:1)

我之前遇到过这种问题。要解释这一点,您可以将Flash文件映像为图像。通常,页面中的图像将在加载整个页面后显示。对于你的flash文件,在$ .ready事件中,flash DOM被插入你的页面,但它的内容正在加载,它的环境还没有准备好。

要处理此问题,您需要在页面中注册回调函数,如下所示:

window.ping = function () {
    $('#fmap')[0].setRegion('regiona');
}

然后在您的Flash环境中,请调用ping()注册

函数调用的顺序是这里的关键点。

答案 1 :(得分:0)

好的,明白了。首先,函数声明需要在ExternalInterface.addCallback位之上。另外,一旦完成它就开始抛出一个不同的错误,所以我不得不做一个新的功能...感谢你的帮助。