• 締切済み

JavaScriptで起動時にFlashへ引数を渡す方法 [ActionScript3.0]

Flashで、動的に外部ファイルから画像を読み込むスライドショーを作りました。 これをHTMLに埋め込む際にわからない点がありますので、ご意見おねがいします。 index.htmlに、 ・写真集1 ・写真集2 ・写真集3 という様にリンクがあり、クリックすることで別ウィンドウslideshow.htmlが開きます。 このとき、クリックしたリンクによってslideShow.html?id=1というように固有のid番号がURLに付加され、別ウィンドウに渡されます。 slideshow.htmlにはスライドショーのFlashが埋め込まれており、URLに付加されたid番号を取得して、どの写真をスライドショーにするかを決定します。 URLに付加されたid番号をJavaScriptで取得することは出来ました。(document.writeで表示できます) しかし、これをFlashに渡す方法がよくわかりません。 <param name='FlashVars' value ='id=1' /> という様に、静的にFlashに渡すことはできるのですが、このidの部分を動的に取得して渡すのに、スクリプトでどのように記述すればいいのかが分からず悩んでいます。 よろしくお願いします。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

サーチの解析が複数のパラメータを想定しているようなのに、内容をチェックせずに決めうちみたいだし… HTMLのほうもembedとparamでダブっているのでは? (Flashは良く知らないけど、片方でよいのではないでしょうか?) とりあえず、サーチ部は「id=○○」がくるものと仮定してよくて、かつ、パラメータにidをふってよいのなら、  document.getElementById('id_num').value = location.search.substr(1); の1行でもいけると思うけど… (ダブりはとるという仮定です)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

DOMで探してvalueを設定し直せばよろしいかと… 代入するパラメータの値がnumberにあるとすれば、こんな感じ? var e = document.getElementsByTagName('PARAM'), el; for (var i=0; i<e.length; i++) { if (e[i].name=='FlashVars') el = e[i]; break; } if (el) el.value = 'id' + number;

goo_boo
質問者

補足

ありがとうございます。 いただいた回答とは少し違うのですが、自分なりに以下のようにphotoShow.htmlを作成しました。 firefox3.0.10では正しく動作するのですが、IE7では値を渡せていないようです。 当初の質問とは多少ずれてきますが、ご意見いただければありがたいです。JavaScriptは基礎から勉強していないため、文法等があまり分からず苦戦しております。 よろしくお願いします。 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis" /> <title>photo garally</title> <SCRIPT LANGUAGE="JavaScript"> <!-- // id番号の取得 var QS = new Array; if (location.search.length > 1) { var m_Array = location.search.substr(1).split("&"); for (idx in m_Array) { QS.push(m_Array[idx].split("=")); } } function setID(){ var targetElement = document.getElementById('id_num'); targetElement.setAttribute("value", "id=" + QS[0][1]); targetElement = document.getElementById('photoShow_EMBED'); targetElement.setAttribute("FlashVars", "id=" + QS[0][1]); } //--> </SCRIPT> </head> <body bgcolor="white"> <center> <object id="photoShow" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="950" height="700" align="middle"> <param name="allowScriptAccess" value="sameDomain" /> <param name="allowFullScreen" value="true" /> <param name="movie" value="photoShow.swf" /> <param name="loop" value="false" /> <param name="menu" value="false" /> <param name="quality" value="high" /> <param name='FlashVars' id="id_num" value ='id=-1' /> <embed id="photoShow_EMBED" src="photoShow.swf" FlashVars='id=-1' loop="false" menu="false" quality="high" bgcolor="#333333" width="950" height="700" name="photoShow" align="middle" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer_jp" /> <script>setID();</script> </object> </center> </body> </html>

関連するQ&A