ブラウザ上でActionSctiptの簡易デバッグ。
ブラウザでFLASHを再生中、デバッグのためにパラメータなどを出力する方法です。
ActionScriptを制作中によく利用するtraceですが、ブラウザで再生中には実行することができません。そこでJavaScriptとの連携を利用して同様のことを実現します。
はじめにHTML内にJavaScriptで、引数を受け取りダイアログで表示するスクリプトを記述します。関数名は「flashTrace」としておきます。
1 2 3 4 5 |
<script type="text/javascript"> function flashTrace($str) { alert($str); } </script> |
次にActionScriptでは、JavaScriptの関数を実行するたスクリプトを記述します。引数の一つ目がJavaScriptの関数名で、二つ目が出力したいパラメータです。
1 |
ExternalInterface.call("flashTrace", "デバッグのテスト"); |
これでブラウザで再生中に、ダイアログでActionScript内のパラメータを出力することができます。
ですが、このままだとFLASHで制作中のときには、traceも併記する必要が出てしまいます。その場合、下記のようにブラウザで再生かどうかを判定して、どちらか実行する関数にしておくと便利です。
1 2 3 4 5 6 7 8 9 10 11 |
ft("デバッグのテスト"); function ft(str:String):void { //サーバへのアクセスを判定してJavascript、またはtraceを実行 if (loaderInfo.url.indexOf("http") == 0) { ExternalInterface.call("flashTrace", str); } else { trace(str); } } |
ちなみにサーバへのアクセス(http://)ではなく、ブラウザで直接HTMLファイルを開いた場合(file://)には、FLASHのセキュリティでJavaScriptが実行されません。外部サーバではなくローカルで実行するには、Webサーバをローカル環境に構築する必要があります。