我试图从我的主权财富基金内部ExternalInterface.call()。
注意,调用来自我嵌入到另一个SWF中的SWF (我无法控制的_root SWF )。
这是我的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;
}
}以下是我的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")');问题是ExternalInterface.call('player_DoFSCommand("CC_ClosePlayer", args)')不工作,或者至少"yo“没有像预期的那样出现在控制台中。
在调用ExternalInterface时,脚本肯定已经加载。第二个调用可以工作,"hello“出现在控制台中,但是第一个函数没有启动。
我可以通过直接在控制台player_DoFSCommand("CC_ClosePlayer", args)中输入来验证该函数是否工作,并且它成功地进行了日志记录。
发布于 2013-03-05 16:55:15
您能在嵌入代码中验证allowScriptAccess设置为true吗?
试试这个:
var isAvailable:Boolean = ExternalInterface.available;
trace(isAvailable);您还希望像这样使用ExternalInterface,将参数作为第二个变量传递:
ExternalInterface.call("player_DoFSCommand",args);或
ExternalInterface.call("console.log","testing...");https://stackoverflow.com/questions/15229373
复制相似问题