Domanda

Non riesco a ricevere una chiamata da JSFL ad uno SWFPanel a lavorare tramite l'API ExternalInterface. Seguo le istruzioni qui come segue:

Nel pannello SWF, in scena 1 azione 1, registro un funzione callback ExternalInterface:

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

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

Poi nel mio JSFL sto scorrendo i pannelli swf per individuare il pannello SWF e poi richiamare il metodo appendTrace come segue:

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

La myPanel.call("appendTrace", traceString); linea si chiama, ma nulla è tracciato, accodato e nessun errore viene generato così sembra che ExternalInterface non chiama il metodo appendTrace. Sembra che tutto sia impostato correttamente, ma hanno provato diverse cose e non funziona. Quali sono alcuni grattacapi comuni con questo approccio?

È stato utile?

Soluzione

Il problema era che stavo usando AS2 invece di AS3. Quanto sopra SWFPanel <-> comunicazione JSFL richiede pannelli SWF AS3. Una volta che sono passato a AS3 ha funzionato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top