我无法从 JSFL 调用 SWFPanel 以通过 ExternalInterface API 工作。我正在按照此处的说明进行操作,如下所示:
在 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 方法。似乎一切都设置正确,但尝试了几件事,但它不起作用。这种方法有哪些常见的陷阱?