JavaScriptからFlash内の任意の関数を呼び出すときには以下のようにします。
まずFlash内の関数 my_func を呼び出したい場合は下記のようにして JavaScriptから呼び出す様の関数 JS_my_func を定義します。
function my_func(){ // ここに処理内容を記述 } import flash.external.ExternalInterface; ExternalInterface.addCallback("JS_my_func", _root, my_func);
JavaScript内には以下のように記述します。
function test_asfunc(){ var id ='hogehoge' var swf = document.all? window[id] : document[id]; alert(swf); ret_val = swf.JS_my_func(); // 引数を渡したければカッコ内に記述 alert(ret_val); }
<a href="#" onclick="test_asfunc();">TEST</a>
参考:http://goo.gl/0r8vh
■ JavaScriptを実行する方法
// javascript import flash.external.ExternalInterface; ExternalInterface.call("function(){ javascript:alert('test from timeline as'); }");
■ JSProxyを使う方法
JSProxy
http://d.hatena.ne.jp/secondlife/20071213/1197472257
を使うと便利です。
Flashのタイムラインアクションに以下を記述。
jsproxy.as をパブリッシュするファイルと同じフォルダに置いておく
import JSProxy; JSProxy.proxy.$alert('JavaScript from timeline as');
■ 注意点
Windows IE6 の場合、HTML表示後に動的に生成したDOMオブジェクト内にFlashムービーを 貼り付けると、JavaScript実行時に 「NullはNullまたはオブジェクトではありません。」 というエラーが表示されるので注意。 HTMLにFlash貼り付けエリアをあらかじめ用意しておくとよい。
■ ActionScriptからJavaScriptのalertを利用する。
下記のように記述します。
// ActionScript 3.0 var hoge=500; import flash.external.ExternalInterface; ExternalInterface.call("function(){ javascript:alert('hoge'); }"); // ActionScript 2.0 var hoge=500; getURL("javascript:alert('"+hoge+"');");
■ FireFoxの機能拡張 FlashTracer を利用する。
https://addons.mozilla.org/ja/firefox/addon/flashtracer/
注意:debug versionのフラッシュプレイヤーが必要です。
1. /Library/Application Support/Macromedia/mm.cfg を以下の内容で作成します
ErrorReportingEnable=1 TraceOutputFileEnable=1
2. FlashTracerをインストール後ログファイルの場所を指定します。
例:ユーザー「hogehoge」の場合
:Users:hogehoge:Library:Preferences:Macromedia:Flash Player:Logs:flashlog.txt
参考:http://d.hatena.ne.jp/kasahi/20070531/1180630084