0

swfオブジェクトを使用してswfを埋め込みます。JSからフラッシュ関数を呼び出すために外部インターフェースを使用しようとしていますが、問題があります。私はすべてのドキュメントを検索し、たくさんのものを読みました、そして私はそれを正しくやっていると確信しています。問題がどこにあるのか誰かが指摘できますか?

        var flashvars = {}; 
        var params = {wmode:"opaque", allowscriptaccess:"always" }; 
        var attributes = {id:"MySwf",  name:"MySwf"};
        swfobject.embedSWF("MySwf.swf", "flashContent", "600", "400", "9.0.0", "swfs/expressInstall.swf", flashvars, params, attributes,function(e){
            if(e.success){
                _flashRef = e.ref;
                testExternalInterface();                    
            }else{
                alert("We are sorry, flash is required to view this content.");
            }
        });
       function testExternalInterface(){        
              var swf = document.getElementById("MySwf");
              swf.sendMeTheGoods("TEST TEST");
    };

上記は私のフラッシュに埋め込まれたコードとjs関数です

        if (ExternalInterface.available)
        {
            trace("adding external interface");
            ExternalInterface.addCallback("sendMeTheGoods", sendMeTheGoods);
        }
    public function sendMeTheGoods(text:String):void
    {
        trace("setting vars")
        trace(text);
        txtYouSent.text = text;
    }

エラーUncaughtTypeErrorが発生します:オブジェクト#にはメソッド'sendMeTheGoods'がありません

document.getElementById( "MySwf");を参照して両方を試しました。およびdocument.getElementById( "flashContent"); 両方の方法でエラーが発生します。助言がありますか?

4

2 に答える 2

0

外部インターフェースAPIはすぐには利用できません。準備が整うまで、1秒かかります。FlashPlayerがEIAPIを初期化する前に、コールバックが発生している可能性があります。'test'関数の呼び出しを遅らせて、コールバックに遅延を追加してみてください。

于 2012-06-10T18:31:54.700 に答える
-1

var swf = navigator.appName.indexOf( "Microsoft")!= -1?window ["MySwf"]:document ["MySwf"];

于 2012-06-09T20:34:21.553 に答える