0

我无法从 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 方法。似乎一切都设置正确,但尝试了几件事,但它不起作用。这种方法有哪些常见的陷阱?

4

1 回答 1

0

问题是我使用的是 AS2 而不是 AS3。上述 SWFPanel<->JSFL 通信需要 AS3 SWF 面板。一旦我切换到 AS3,它就起作用了。

于 2010-02-11T22:55:25.667 回答