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をつけてみた.