javascript - ExternalInterface.call no funciona
flash actionscript (1)
¿Puedes verificar que allowScriptAccess se establezca en verdadero en el código de inserción?
Prueba esto:
var isAvailable:Boolean = ExternalInterface.available;
trace(isAvailable);
También desea utilizar ExternalInterface de esta manera, con sus argumentos pasados como la segunda variable:
ExternalInterface.call("player_DoFSCommand",args);
o
ExternalInterface.call("console.log","testing...");
Estoy intentando ExternalInterface.call()
desde dentro de mi SWF.
Tenga en cuenta que la llamada proviene de un SWF que he incrustado en otro SWF (el SWF _root
que no tengo control).
Aquí está mi JavaScript:
function player_DoFSCommand(command, args)
{
args = String(args);
command = String(command);
var arrArgs = args.split(g_strDelim);
switch (command)
{
case "CC_ClosePlayer":
console.log("yo");
break;
default:
// alert(command);
break;
}
}
Aquí está mi código AS2:
import flash.external.ExternalInterface;
var quiz = _root;
quiz.g_mcFrame.mcFinish.swapDepths(quiz.getNextHighestDepth());
quiz.g_mcFrame.mcFinish._visible = false;
quiz.oSlide.m_oInteraction.m_oVariableMgr.m_arrBoolResumeData = false;
var arrVars:Object = quiz.oSlide.m_oActionHandler.m_oFrame.m_oVariableMgr.m_arrVariables;
var args:Array = [
arrVars[2].m_nNumber, // Points awarded
arrVars[3].m_nNumber, // Max points
arrVars[5].m_nNumber, // Pass percentage
arrVars[6].m_nNumber, // Pass points
arrVars[7].m_nNumber, // Score percent
arrVars[10].m_strString // Result
];
ExternalInterface.call(''player_DoFSCommand("CC_ClosePlayer", args)'');
ExternalInterface.call(''console.log("hello")'');
El problema es ExternalInterface.call(''player_DoFSCommand("CC_ClosePlayer", args)'')
no funciona, o al menos "yo" no aparece en la consola como se esperaba.
La secuencia de comandos definitivamente se carga cuando se llama ExternalInterface. La segunda llamada funciona y "hola" aparece en la consola, sin embargo, la primera función no se activa.
Puedo verificar que la función funciona tecleando directamente en la consola player_DoFSCommand("CC_ClosePlayer", args)
y se registra exitosamente.