2011-12-20 13 views
0

私はフラッシュからデータをExternalInterface経由でJavascriptに渡そうとしています。 ローカルホストでテストしてもうまく動作しますが、IISでウェブサイトを設定しようとしたときに同僚が私のアプリケーションをテストできるようになりました。http://192.168.0.10/MyAppFlash ExternalInterfaceを使用しているエラー

Error calling method on NPObject.

のStackOverflowでいくつかの質問を読んだ後、私は私のASファイルで私の埋め込みタグでallowScriptAccess="always"Security.allowDomain(*)を設定しようとしましたが、それはまだ動作しません。

私はswf objectを使用しています。

私には何が欠けていますか?

EDIT:私は私のswfファイルに JSからメソッドを呼び出そうとするとエラーが発生しました。これは答えに適応したコードです。

var swfReady = false; 
swfobject.embedSWF("swf/1.swf", "flashContent", "300", "250", "11", "expressInstall.swf", null, { allowScriptAccess: "always" } , null, function (e) { 
    if (e.success) { 
     setTimeout(function() { 
       swfReady = true; 
     }, 150); 
    } 
}); 

btnConfig.on('click', function() { 

    if (swfReady) { 
     flashContent.myMethod(); 
    } else { 
     alert("Hold on..."); 
    } 

}); 

これは、ローカルホストで素晴らしい作品誰かが私のIPを通じて同じページを表示しようとすると、私は、JavascriptのエラーError calling method on NPObjectを取得します。

+0

あなたは 'のSecurity.allowDomain(「*」)を行っていることを確認し、' 'あなたのExternalInterface'コール –

+0

前に、私は私のAS3クラスのコンストラクタでそれを設定しています。そうですか? –

+0

SWFファイルは埋め込まれているHTMLページと同じドメインにありますか? –

答えて

1

これはswfが準備ができていないときに発生することがあります。 embedSWFでコールバック関数を試すことができます。このコールバックまでswfメソッドを呼び出さないでください。これに加えて、数ミリ秒の遅延が必要になることがあります。

swfobject.embedSWF("sample.swf", "swfdiv", "400", "300", "9.0.0", "expressInstall.swf", null, null, null, function (e) { 
    if (e.success) { 
     console.log("swf ready "); 
     setTimeout(function(){ 
      // call swf method here 
     }, 150); 
    } else { 
     console.log("embedding failed"); 
    } 
}); 
+0

私はすべてのバインドをコールバックの中に入れようとしましたので、swfが準備が整う前にボタンをクリックしても何もしません。それはうまくいきませんでした... –

+0

javascript関数を1つ追加し、** ExternalInterface.call **を使用して呼び出すと、ExternalInterfaceが機能していることが確認されます。 – Diode

+0

私はそれをして、それは働いています。 ** ExternalInterface.addCallback ** –

関連する問題