[Tips] Flash/JavaScript Integration Kitを使う
・Flash/JavaScript Integration Kit
ここからキットをダウンロード.
何ができるかというと,前回のエントリーにも書いた,JavascriptからのFlashの関数呼び出しである.
1.内容の説明
このKitの重要な部分だけを切り出すと,
・FlashJavascriptGateway/installation
・FlashJavascriptGateway/source/flash/actionscript/com
の2つのフォルダである.
installationに入っている以下の二つのファイルは,htmlやswfファイルと一緒にアップロードする.
まぁ,DLLみたいなもんか.
・FlashJavascriptGateway/installationJavaScriptFlashGateway.js
・FlashJavascriptGateway/installationJavaScriptFlashGateway.swf
またcomは,swfをビルドするときに使うライブラリみたいなもの.これは,Flashで開発するときに飲み必要で,アップロードする必要はない.
このフォルダは,Flashのライブラリパスに追加するか.flaファイルと同じパスにおいておくとよい.
・FlashJavascriptGateway/source/flash/actionscript/com
2.ソースを書く〜swf
Flash側をまず作る.
hogeが文字列を引数にとる関数で,_rootにあるdisplayインスタンスにそれを入力する.
import com.macromedia.javascript.JavaScriptProxy; var proxy:JavaScriptProxy = new JavaScriptProxy(_root.lcId, this); function hoge( arg ) { _root["display"].text = arg; }
これでおk.
3.ソースを書く〜Javascript
次に,HTMLのJavascriptを書く.
<HTML> <BODY> <script type="text/javascript" src="http://son-son.sakura.ne.jp/archive/JavaScriptFlashGateway.js"> </script> <script type="text/javascript"> var uid = new Date().getTime(); var flashProxy = new FlashProxy(uid, 'http://son-son.sakura.ne.jp/archive/JavaScriptFlashGateway.swf'); </script> <script type="text/javascript"> var tag = new FlashTag('http://son-son.sakura.ne.jp/archive/jflash.swf', 300, 200); tag.setFlashvars('lcId='+uid); tag.write(document); </script> <a href="javascript:flashProxy.call('hoge', 'hoge is called.');">実行</a> </BODY> </HTML>
一つめのscriptが,Flash/JavaScript Integration KitのJavascript側のソース,
二つめのscriptが,Flash/JavaScript Integration KitのFlash側のソースとなる.
また,三つ目のscriptは,Flashのobjectファイルを自動生成し,JavascriptとFlashをつなぐところである.
4.現状の問題点?
swfを新しくしても更新されない.キャッシュが問題だろう・・・.どうしたものか.
※どうやら大丈夫な様子.
※もし,キャッシュがうまく行かない場合は,このサイトを参考にJavascriptのソースをいじればよいかと思われる.
flashTag += '<embed src="'+this.src+'?1" ';
ここでは,ソースのパスのおしりに?1をつけてみた.