1

ActionScript から非常に単純な JavaScript 関数を呼び出そうとしていますが、機能していないようです。これが私のコードです:

JavaScript

function alert() {
    alert("hi");
}

ActionScript

ExternalInterface.call("alert");

HTML

<object width="500" height="500"
        classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"            
        codebase="http://fpdownload.macromedia.com/
        pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0">
        <param name="SRC" value="FlashApp.swf"/>
    <param name="allowScriptAccess" value="always" />
    <embed src="FlashApp.swf" width="500" height="500" allowScriptAccess="always">                
    </embed>
</object>
4

2 に答える 2

1

すでにアラート機能があるからでしょうか?これは私にとってはうまくいきます。

//js
function myAlert() {
    alert("hi");
}

//as3
ExternalInterface.call("myAlert");

AS3 コード:

public class Main extends Sprite 
{
    public function Main():void 
    {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);
        // entry point
        ExternalInterface.call("myAlert");

    }

}
于 2013-05-24T22:50:45.890 に答える
0

そのメソッドを呼び出す前に、JavaScript が初期化されていることを確認してください。あなたがそれで働かない限り、本当に運次第です。Baris Usakli の PC は高速で、js は swf よりも高速に初期化されるのではないかと思います。

javascript onload イベントが発生したときに、swfobject を使用して swf を埋め込みます。このようにして、js 関数が存在することがわかり、それを呼び出すことができます。

ボーナス ポイントとして、swf オブジェクトは、すべてではないにしてもほとんどのブラウザに埋め込みます。大騒ぎもせず、オーバーヘッドもごくわずかです。

于 2013-05-24T23:32:17.000 に答える