JavaScriptからActionScript3.0を呼び出す際のメモ
もう暑いとか言う気力も失せたminamiです。
ページのJavascriptからFlashのActionScriptを呼び出す方法を最近まで知らなかったので備忘録的に書きます。
ExternalInterface.addCallback()を使う
ActionScriptからJavascriptを呼び出すにはExternalInterface.call()という関数を使いますが、
JavaScriptからActionScriptを呼ぶ際にも同じクラスのExternalInterface.addCallback()という関数を使います。
ExternalInterface.addCallback()はActionScript メソッドをコンテナから呼び出し可能なものとして登録することができます。
記述のサンプル
AS側の記述
// flash.external.ExternalInterface を import
import flash.external.ExternalInterface;
//javascriptから"flash_function"として呼ぶActionScript関数として test を設定
ExternalInterface.addCallback("flash_function", test);
// ActionScript関数 test を定義する。
//「TEST」という文字列を返す関数
function test():String {
return "TEST";
}
JS側の記述
//flash objectの取得
var flash=document.as3 || window.as3;
//ドキュメントをクリックしたら実行
document.onclick = function(){
alert(flash.flash_function();)
}
ドキュメントをクリックした際、AS側から返ってきた"TEST"という文字列をアラート表示します。
「flash」という名前の変数には、flash object の参照先を代入しています。
ポイントは、flash objectを取得する際、IEではdocument.object['id']という参照が使えないのでwindow.object['name']という参照を使って取得している点です。「 || 」演算子を使ってIEとそれ以外のブラウザに対応するようにしています。