JavaScript と Flash の連携
Flash を埋め込む html で JavaScript の関数を作っておくことで、
Flash の ActionScript から JavaScript の関数を実行する事ができます。
JavaScript が扱えるのならば、Flashとの連携でよりインタラクティブなページが作れるかもしれません。
まず、 html ファイルに以下のように JavaScript の関数を作成します。
ここではmyFuncという名前の関数を定義してみます。関数の名前は好きなものに変えても構いません。
<html>
<head>
<script type="text/javascript">
<!--
function myFunc(arg){
}
//-->
</script>
</head>
<body>
</body>
</html>
argというのは関数を呼び出した際に指定する引数を受け取るための変数です。詳しくは JavaScript を解説しているサイトや書籍で調べてみてください。
この例では、『alert』関数を使って、ダイアログボックスを開くようにしてみます。
<html>
<head>
<script type="text/javascript">
<!--
function myFunc(arg){
window.alert(arg);
}
//-->
</script>
</head>
<body>
</body>
</html>
html ファイルでの作業はこれで終了です。
続いて、Flash から JavaScript の関数を呼び出すようにします。
「アクション」の『URLを取得』と、ActionScript の『getURL』で呼び出す方法があります。
『URLを取得』の場合、「URL」に記述: | javascript:myFunc(\"表示したい文字\"); |
『getURL』の場合: | getURL('javascript:myFunc(\"表示したい文字\");'); |
Flash での処理はこれで完了です。
Flash を単体で閲覧した時は JavaScript を呼び出すことができないので、先ほど作成した html に Flash を埋め込んで表示させます。
<html>
<head>
<script type="text/javascript">
<!--
function myFunc(arg){
window.alert(arg);
}
//-->
</script>
</head>
<body>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="150" height="50" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="dialog.swf" />
<embed src="dialog.swf" width="150" height="50" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</body>
</html>
html に Flash を埋め込む方法については、こちらも参照してください。
この html ファイルを表示すると、 Flash で JavaScript が呼び出されると警告ダイアログボックスが表示されるはずです。
JavaScript が動作しない場合はセキュリティ向上のための制限によってブロックされている可能性があります。
インターネット上にアップロードして表示するか、 Flash を埋め込む html タグのパラメータ『allowScriptAccess』の値を『sameDomain』から『always』に変更してみてください。
(Operaでは文字化けし、FireFoxではエラーになってしまうようです。) → 修正しました。
→ (Operaだとダイアログボックスが表示されない(?)ようです。) → 修正しました。