|
FlashからJavascriptに通信しブラウザの名前を答えます。 Adobe Flash 8 Professionalを使用してサンプルを作成しています。 |
Javascriptと通信する「ExternalInterface」
FlashとJavascriptの間で通信するには3つの方法があります。1. 「getURL()」を利用して「getURL('javascript:関数名;')」の形で送信する。
一番簡易的な方法ですが、一部ブラウザではページ遷移を行ったものと解釈されページ内の他のコンテンツに影響を与える場合があります。また別途戻り値を取得する仕組みを用意する必要があります。
2. 「fscommand()を利用外部スクリプトにアクセスする。
主にVBScript等のテクノロジーにアクセスする機能ですが、Flashではセキュリティ制限が厳しく使い所が難しいものです。どちらかと言うとオフラインコンテンツを作成する際に使うべきでしょう。
3. ExternalInterfaceを利用して、外部スクリプトにアクセスする。
Web上の主にJavascriptと通信することを目的に用意されている機能です。比較的モダンなブラウザを要求しますが、引数や戻り値の受け渡しが簡単で今後JavascriptとFlashの通信はこちらを使うことが推奨されています。
今回は「ExternalInterface」について説明していきたいと思います。
FlashからJavascriptの関数を実行する
2. レイヤー「action」の1フレーム目のActionscriptを確認してください。
import flash.external.ExternalInterface; btn.onRelease = function( { retuneText.text = ExternalInterface.call("jsMethod","ブラウザの名前は?"); }1行目でExternalInterfaceをインポートしています。
2行目からがボタンを押した際に実行される関数です。
3行目は戻り値を表示させるためのテキストボックスにテキストを挿入しています。「ExternalInterface.call("Javascriptの関数名"),"Javascriptに渡す引数")」で、FlashからJavascript上の関数を実行することが出来ます。
このようにJavascriptの関数の実行や戻り値の取得を特に意識せずシンプルに使用することが可能です。
3. 次にHTML上に以下のJavascriptを記述してください。
<script language="JavaScript" type="text/javascript">簡単に説明すると「JSMethod」という関数があり、Flashからの引数「ブラウザの名前は?」というアラートウィンドウを表示させます。また、戻り値としてブラウザの情報を返すというシンプルなJavascriptです。
function JSMethod(i){
alert(i);
return navigator.appName;
}
</script>
4. 最後にローカル環境で動作チェックするために<object>タグ内の以下の記述を追加してください。
まず<param>タグに以下の記述を追加します。
<param name="allowScriptAccess" value="always" />次に<embed>内に以下の記述を追加します。
<embed src="comp.swf" allowScriptAccess="always"(以降略)
FlashとJavascriptは同じローカルPC上で動作するプログラムです。Javascriptだけでグラフィカルなインターフェイスを作成するのは手間がかかりますし、Flashだけでは出来ない機能も多々あります。そこで、こういったスクリプト間の通信が必要となります。 Flashだけでは難しい部分は積極的にJavascriptと連携して乗り越えていってはいかがでしょうか?