ExternalInterface.call无效

时间:2013-03-05 16:42:17

标签: javascript flash actionscript actionscript-2 externalinterface

我正在尝试从我的SWF里面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)中输入来验证该功能是否有效,并且它会成功记录。

1 个答案:

答案 0 :(得分:7)

您是否可以验证embed代码中allowScriptAccess是否设置为true?

试试这个:

 var isAvailable:Boolean = ExternalInterface.available;
 trace(isAvailable);

你也想像这样使用ExternalInterface,你的参数作为第二个变量传递:

 ExternalInterface.call("player_DoFSCommand",args);

 ExternalInterface.call("console.log","testing...");