サンプル: ActionScript 関数を Unity からコールする
サンプル: Stage をアクセス

サンプル: ブラウザ JavaScript 通信

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

このサンプルで Action Script 3 コードによりブラウザのJavaScriptと通信する方法を示します。このサンプルはActionScriptクラスの ExternalInterface を活用します。

実行されたとき,BrowserCommunicator.TestCommunication() 関数はコールバックを登録しその後にブラウザJavaScriptがコール出来ます。次にActionScriptはブラウザJavaScriptをコールして警告ポップアップが表示されます。公開されたActionScript関数は,JavaScriptにより実行され二方向のコミュニケーションテストとして完了です。

必要なJavaScript

次のJavaScriptをHTMLページに追加してUnityによりパブリッシュされたSWFを供給します。これがActionScriptからコールされる関数を作成します:

JavaScript

<script type="text/javascript">

function calledFromActionScript()
{
    alert("ActionScript called Javascript function")

    var obj = swfobject.getObjectById("unityPlayer");
    if (obj)
    {
        obj.callFromJavascript();
    }
}

</script> 


BrowserCommunicator.as (およびマッチングする C# クラス)

ActionScript 3

package
{
    import flash.external.ExternalInterface;
    import flash.system.Security;
  
    public class BrowserCommunicator
    {
        //Exposed so that it can be called from the browser JavaScript.
        public static function callFromJavascript() : void
        {
            trace("Javascript successfully called ActionScript function.");
        }
    
        //Sets up an ExternalInterface callback and calls a Javascript function.
        public static function TestCommunication() : void
        {
            if (ExternalInterface.available)
            {
                try
                {
                    ExternalInterface.addCallback("callFromJavascript", callFromJavascript);
                }
                catch (error:SecurityError)
                {
                    trace("A SecurityError occurred: " + error.message);
                }
                catch (error:Error)
                {
                    trace("An Error occurred: " + error.message);
                }
        
                ExternalInterface.call('calledFromActionScript');
            }
            else
            {
                trace("External interface not available");
            }
        } 
    }
}


クラスのC#ダミー実装 :

C#

[NotConverted]
[NotRenamed]
public class BrowserCommunicator
{
   [NotRenamed]
   public static void TestCommunication()
   {
   }
}


テストする

BrowserCommunicator.TestCommunication() をコールするだけで二方向の通信テストが実行されます。

潜在的な問題

Security Sandbox 違反

A SecurityError occurred: Error #2060: Security sandbox violation

これはパブリッシュした,SWFファイルが自身のHTMLファイルへのアクセス権限がないときに発生します。これをろーかで解決するためには次のいずれかをします:

  • SWFを含むフォルダをFlash Playerの Global Security Settings Panel のtrusted locations (信頼するロケーション) として追加します。
  • ファイルを localhost でホストします。

Flash Security SandboxについてはAdobeの documentation を参照して下さい。

サンプル: ActionScript 関数を Unity からコールする
サンプル: Stage をアクセス