Pergunta

Eu não posso receber um telefonema de JSFL a um SWFPanel ao trabalho por meio da API ExternalInterface. Eu estou seguindo as instruções aqui como segue:

No Painel de SWF, na cena 1 acção 1, eu registrar uma função de retorno de chamada com ExternalInterface:

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

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

Então, em minha JSFL Estou iteração através dos painéis swf para localizar o painel de swf e depois invocar o método appendTrace da seguinte forma:

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

O myPanel.call("appendTrace", traceString); linha é chamada, mas nada é rastreada, anexada e nenhum erro é lançado assim parece que ExternalInterface não está chamando o método appendTrace. Parece que tudo está configurado corretamente, mas tentei várias coisas e ele não está funcionando. Quais são algumas dicas comuns com esta abordagem?

Foi útil?

Solução

O problema era que eu estava usando AS2 em vez de AS3. O acima SWFPanel <-> comunicação JSFL requer painéis AS3 SWF. Uma vez que eu mudei para AS3 funcionou.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top