Think About it



Home > Blog

20080125

Flash + HTML(2)


HTML側からFlashに変数を渡す場合、
以前に書いたように
swfを読み込んでいる部分に&をつけることで簡単に処理できます。

それと似たような処理で、表示しているHTMLのURLから変数を渡してみます。
(javaScriptがメインとなります)

考え方としてはswfのURLに直接変数を書き込む方法と同じで、
HTMLのURLの末尾に変数を付加し、
それをJavaScriptで読み込み、
それをswfに渡す、という方法になります。

具体例。

swfを読み込む側のHTMLに以下のJavaScriptを記述。
var str = location.search;
str = str.substring(1,str.length);


このページへのリンクを以下のように記述。
<a href="xxxx.html?1">Link</a>


これで、読み込み側のHTMLの変数、strに、「1」が入ります。
※location.searchで、URLの?からを取得できます。
この例では、「?1」となります。
なのでそこから1だけを、substringで取り出しています。

あとは、この変数をswfに入れてやるだけです。

これは、swfを読み込んでいる部分をJavaScriptで吐き出すように書いてやり、
swfのURLの後ろに、&=strといれてやるだけです。

・param
document.write('<param name="movie"
value="xxxx.swf?flag='+str+'">\n');

・embed
document.write('<embed src="top.swf?flag='+str+'" quality="high"
bgcolor="#ffffff" width="750" height="214"
align="" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer">\n');

※swfのURLを読み込むところのみ記述。
どっちも一行です。

これを、FlashVarsを用いて、変数を渡してやることもできます。
document.write("<param name=\"FlashVars\" value=\"flag="+str+"\" />");

・embedは割愛。

さらに、これをswfObjectを使用するとさらに簡単になります。
記述部分に、以下のパラメータを足してやるだけです。
so.addVariable("flag", str);

詳しくはこちら。

FLASH-JP.COM フォーラム - リンクされたURLの引数を変数として受け取る。

参考:
A LOT - JavaScriptで変数受け取りの巻

----------------------------------------------------------------------------------------------------