Frage

Ich kann nicht einen Anruf von JSFL zu einem SWFPanel erhalten über das ExternalInterface-API zu arbeiten. Ich folge den Anweisungen hier wie folgt:

In der SWF-Panel in Szene 1 Aktion 1, melde ich mich eine Rückruffunktion mit ExternalInterface:

ExternalInterface.addCallback("appendTrace", this, appendTrace);

function appendTrace(traceString:String):Void {
    trace("appendTrace");
    traceBox.text = traceBox.text + traceString;
}

Da ist in meinem JSFL ich Iterieren durch die swf-Panels die SWF-Panel zu lokalisieren und dann die appendTrace Methode Aufruf wie folgt:

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?");
}
}

Die Linie myPanel.call("appendTrace", traceString); genannt wird, aber nichts verfolgt wird, angehängt und kein Fehler ausgelöst wird, so scheint es, dass ExternalInterface nicht die appendTrace Methode aufrufen. Es scheint, dass alles korrekt eingerichtet ist, aber haben einige Dinge ausprobiert und es funktioniert nicht. Was sind einige typische Hinweise mit diesem Ansatz?

War es hilfreich?

Lösung

Das Problem war, dass ich AS2 statt AS3 wurde mit. Die obige SWFPanel <-> JSFL Kommunikation erfordert AS3 SWF-Panels. Sobald ich auf AS3 eingeschaltet hat es funktioniert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top