D0701181 SWFムービーをHTMLのボタンからコントロール
Name KITA
Date2007年01月18日 (木) 09時26分
Message 憲ちゃん、今年もよろしくお願いします。
Dreamweaverに貼り付けたswfファイルのタイムラインは(1〜600)まであります。
このタイムラインの途中500から再生させて、500〜600の間をループさせたいのですが、
この指示を、Dreamweaver画面(swfファイルの外側から)からhtmlのボタンをつくり、
それををクリックさせて操作するには、どのような指示をすればよいのでしょうか?
よろしくお願いいたします。
Response 01
2007年01月19日 (金) 04時37分> 憲ちゃん   
こんばんは、KITAさん。

HTML内でその中のオブジェクトに変数を渡すJavaScript、「SetVariable」を活用します。
書式は・・・

 document.オブジェクト名(ID).SetVariable('渡す変数名',値);

ご質問の場合のオブジェクトがFlashのSWFになりますので、その埋め込みタグのID(又はNAME)で
例えば”loop_flash”と付け・・・

 <OBJECT classid="clsid: 〜略〜 width=500 height=100" id="loop_flash">
 ・・・・
 <EMBED src="loop_flash.swf" 〜略〜 width=500 height=100 name="loop_flash">
 ・・・・

SWFに渡す変数名をframeNumということにして・・・

 <a href="JavaScript:document.loop_flash.SetVariable('frameNum',500); void(0);">文字</a>

一例としてこのようなタグを記述すると、
”文字”リンクをクリックしたとき、該当SWFの_root内に「frameNum = 500」が送り込まれます。
Flash内では、この変数frameNumの値を利用して再生とループを行うようにします。

Flashのシーン(_root)の1フレームのフレームアクション・・・

 frameNum = Num = 1; ←変数frameNum及び変数Numを定義、初期値を1に設定
 this.onEnterFrame = function() { 毎フレームごとに以下を繰り返し実行
   if (frameNum != Num) { frameNumの値とNumの値が異なる場合だけ
     this.gotoAndPlay(frameNum); ←frameNumの値のフレームから再生し、
     Num = frameNum; ←(以後この動作をさせないため)NumにframeNumの値を代入(同じ値に)
   }
 };

再生当初、frameNumとNumの値は「1」で同じですから、
if文の条件を満たさず、ここでは何もしないで再生フレームが順次進行し続けます。
HTMLから「frameNum = 500」という値が送り込まれると、その瞬間Numと値を異にすることになり、
if文の条件を満たして、「500」フレームに移動して再生を始めます。
このまま放っておくと、毎フレームごとに条件を満たして毎回500フレームから再生を始めるので、
次の行で変数NumにもframeNumの値「500」を代入して同じ値に設定しておきます。
次回HTMLから変数frameNumに別の値が設定されるまで、この状態が継続します。

ループは、最終フレームのフレームのアクションで・・・

 this.gotoAndPlay(frameNum); ←frameNumの値のフレームから再生

としておきます。


loop_flash00.zip ※MX仕様
※埋め込みはIEのアクティブ化対策を行っています。内容はサンプルのHTMLファイルを参照。

   

HTMLボタン↑をフォーム用ボタンとしています。
それぞれクリックすると該当フレームから再生とループを行います。
ここでのHTMLタグは・・・

 <input type="button" onClick="document.loop_flash.SetVariable('frameNum',300)" value="GoTo 300">

このように記述しています。
Response 02
2007年01月19日 (金) 05時08分> 憲ちゃん   
ほかにHTMLからSWFを制御する関連記事として・・・
■複数の選曲ボタンのあるMUSIC PLAYERの作成(2)
■フレームラベルのネームつきアンカーについて
それぞれ方法は異なりますが参考にしてください。
Response 03
2007年01月20日 (土) 00時09分> KITA   
憲ちゃん、ありがとうございます。
かなり難しそうですが解読頑張ってみます。
取り急ぎお礼まで。
Response 04
2007年01月20日 (土) 04時03分> KITA   

これから解読する前に、サンプルのフォーム用ボタン(GoTo 1、
GoTo 100、GoTo 200、GoTo 300)を
それぞれ押してみたのですが、特に何も変化しません。
何かが、おかしいのでしょうか?

このページの先頭へ