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

問題は、AS3の代わりにAS2を使用していたことでした。上記のSWFPanel<->JSFL通信には、AS3SWFパネルが必要です。AS3に切り替えると、機能しました。

于 2010-02-11T22:55:25.667 に答える