2

ExternalInterface.call()SWF 内から実行しようとしています。

_rootこの呼び出しは、別の SWF (制御できない 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)')、機能しないか、少なくとも「yo」が期待どおりにコンソールに表示されないことです。

スクリプトは、ExternalInterface が呼び出されるまでに確実に読み込まれます。2 番目の呼び出しは機能し、コンソールに「hello」が表示されますが、最初の関数は起動しません。

コンソールに直接入力して機能が動作することを確認でき、player_DoFSCommand("CC_ClosePlayer", args)正常にログに記録されます。

4

1 に答える 1

7

埋め込みコードで allowScriptAccess が true に設定されていることを確認できますか?

これを試して:

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

また、引数を 2 番目の変数として渡して、このように ExternalInterface を使用することもできます。

 ExternalInterface.call("player_DoFSCommand",args);

また

 ExternalInterface.call("console.log","testing...");
于 2013-03-05T16:55:15.050 に答える