0

私はFlash開発者ではありません。javascriptから.swfファイル通信を接続しようとしています。私はここや他の場所で最も簡単な方法が使用することであることがわかりましたExternalInterface.addCallback()。上記のリンクと公式ドキュメントを参照として使用しました。

このように、フラッシュファイルのメソッドを早めに呼び出そうとしていないことは間違いありません。

これが私のHTMLです(これはドキュメントから直接入手しました):

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="Project" width="1024" height="768" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab">
    <param name="movie" value="Project.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#869ca7" />
    <param name="allowScriptAccess" value="always" />
    <embed src="Project.swf" quality="high" bgcolor="#869ca7" width="1024" height="768" name="Project" align="middle" play="true" loop="false" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"> </embed>
</object>

私のJavascript:

function sendToActionScript(value) {        
    GetSWF("Project").updateText(value);
}

function GetSWF(strName) {
    if (window.document[strName] != null)
        if (window.document[strName].length == null)
            return window.document[strName];
        else
            return window.document[strName][4];
    else
        if (document[strName].length == null)
            return document[strName];
        else
            return document[strName][5];
}

関連するAS:

public function Project_Main() 
{
    commune();
}

public function commune()
{
    if (ExternalInterface.available) {
        ExternalInterface.addCallback("updateText", updateText);
    }
    else
    {
        var displayText:TextTheme = new TextTheme(_ArialBlack, 100, 100, 800, 500, 42);
        addChild(displayText);
        displayText.text = "ERROR:ExternalInterface.NOTavailable";
    }
}

private function updateText(pid:String, playerName:String):void 
{
    var displayText:TextTheme = new TextTheme(_ArialBlack, 100, 100, 800, 500, 42);
    addChild(displayText);
    displayText.text = "PLAYER ID:" + pid + " PLAYER NAME:" + playerName;
}

ここで、ファイルをホストすることはできないと読んだC:\ので、からHTMLをホストしていますhttp://localhost

電話をかけようとすると、次のsendToActionScript("test");エラーが発生します。

Error: Error calling method on NPObject.

許可の問題のように聞こえますが、ご覧のとおり、私にはありallowScriptAccess=alwaysます。私は何が間違っているのですか?

4

1 に答える 1

1

JSには1つのパラメータがあります。

GetSWF("Project").updateText(**value**);

しかし、ASが言うように、それはそれらのうちの2つであるはずです

private function updateText(pid:String**, playerName:String**):void 
于 2012-11-21T14:11:57.983 に答える