FLASH Edición JSFL ExternalInterface
-
18-09-2019 - |
Pregunta
No puedo recibir una llamada de JSFL a un SWFPanel a trabajar a través de la API ExternalInterface. Estoy siguiendo las instrucciones aquí como sigue:
En el Panel de SWF, en escena 1 acción 1, I registrar una función de devolución de llamada con ExternalInterface:
ExternalInterface.addCallback("appendTrace", this, appendTrace);
function appendTrace(traceString:String):Void {
trace("appendTrace");
traceBox.text = traceBox.text + traceString;
}
A continuación, en mi JSFL estoy iteración a través de los paneles SWF para localizar el panel SWF y después de invocar el método appendTrace de la siguiente manera:
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 línea se llama myPanel.call("appendTrace", traceString);
pero nada se traza, anexa y se lanza ningún error por lo que parece que ExternalInterface no está llamando el método appendTrace. Parece que todo está configurado correctamente, pero han intentado varias cosas y que no está funcionando. ¿Cuáles son algunos errores comunes con este enfoque?
Solución
El problema era que yo estaba usando AS2 en lugar de AS3. El SWFPanel anteriormente <-> comunicación JSFL requiere paneles SWF AS3. Una vez que me pasa a AS3 funcionó.