entrance>top page>PC Tips>FlashとJavaScriptのやりとり
FlashとJavaScriptのやりとり

FlashからJavaScriptに変数を渡す場合は比較的簡単です
getURL("javascript:関数名;");
このとき関数の引数の渡し方はたとえば
"sample('"+_root.variable+"')"
のように、()の間に必ず’’を挟むようにします
さもないと、例えば_root.variable="num"と言う文字列だった場合
sample(num);と言うように
引数が文字列”num”ではなく変数numを意味していると言うことになってしまい
まともな結果が得られなくなります

例:getURL("javascript:dialog('"+_root.sendmsg+"');");

また、JavaScriptからFlashに引数を渡す場合は少々面倒です
まず、Flashでパブリッシュしたhtmlファイルのソースをみると
<OBJECT classid="clsid:D27C …>
<EMBED src="(swfファイル名).swf" …>

という長ったらしいタグがあります
このタグの中に
<OBJECT id="適当な名前" classid="clsid:D27C …>
<EMBED name="適当な名前" src="(swfファイル名).swf" …>
と言う感じで要素を追加してください
"適当な名前"の部分には好きな名前(もちろん英数半角)を入れて下さい
ただし、OBJECTタグとEMBEDタグ両方同じ名前にして下さい

つぎに、JavaScriptの関数で
window.document.(↑で決めた名前).SetVariable("_level0.(Flash側の変数名)", (渡したい値));
と言うものを使います
これにより、Flash側の_rootの指定した変数に望みどおりの値が代入されます
例:window.document.sample.SetVariable("level0.receive","hello");
とすると、Flash側の_root.receiveに"hello"と言う文字列が代入されます

以下、サンプルFlash&JavaScriptを載せます
JavaScriptのほうはソースを見ればわかると思うので
Flashのほうだけ解説すると
上のテキストボックスの変数はsendmsg
赤いボタンを押すと
getURL("javascript:dialog('"+_root.sendmsg+"')");
が呼び出されます
また、下のほうのダイナミックテキストの変数はreceivemsgです


 


戻る