我无法通过ExternalInterface API从JSFL获得对SWFPanel的调用。我正在遵循here的说明,如下:
在SWF面板的场景1动作1中,我使用ExternalInterface注册了一个回调函数:
ExternalInterface.addCallback("appendTrace", this, appendTrace);
function appendTrace(traceString:String):Void {
trace("appendTrace");
traceBox.text = traceBox.text + traceString;
}然后,在我的JSFL中,我遍历swf面板以定位swf面板,然后调用appendTrace方法,如下所示:
appendTrace("Received trace");
fl.trace("got here");
function appendTrace(traceString) {
var panels = fl.swfPanels;
var myPanel;
for (var i = 0; i < panels.length; i++) {
if (panels[i].name == 'MyPanel') {
myPanel = panels[i];
break;
}
}
if (myPanel) {
myPanel.call("appendTrace", traceString);
} else {
fl.trace("Can't find Panel. Is it installed?");
}
}调用了myPanel.call("appendTrace", traceString);行,但没有跟踪、附加任何内容,也没有抛出任何错误,所以看起来ExternalInterface并没有调用appendTrace方法。似乎所有的设置都是正确的,但我尝试了几种方法,但都不起作用。这种方法的一些常见问题是什么?
发布于 2010-02-12 06:55:26
问题是我使用的是AS2而不是AS3。上面的SWF面板<->JSFL通信需要AS3 SWF面板。一旦我切换到AS3,它就起作用了。
https://stackoverflow.com/questions/2201710
复制相似问题