我试图ExternalInterface.call()从我的 SWF 内部。
请注意,调用来自我嵌入到另一个 SWF(_root我无法控制的 SWF)中的 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)')不起作用,或者至少“哟”没有按预期出现在控制台中。
该脚本肯定在调用 ExternalInterface 时加载。第二个调用有效,控制台中出现“hello”,但是第一个函数没有触发。
我可以通过直接在控制台中输入来验证该功能是否有效,player_DoFSCommand("CC_ClosePlayer", args)并且它会成功记录。