• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのswfをぴったり同時に再生したいです。 )

2つのswfをぴったり同時に再生する方法

このQ&Aのポイント
  • web画面の左端と右端に、縦長の2つのswfをぴったり同時に開始するように再生する方法について教えてください。
  • swfを正確に同時に再生したい場合、通常のswf読み込みではタイミングにずれが生じることがあります。自動再生でスムーズに再生するための方法を教えてください。
  • 以下の手順で同時再生を実現できるかどうか教えてください。 1. ASのLoaderでswfを読み込むswfを左右に配置し、読み込んだswfを一時停止させてグローバル変数を設定する。 2. もう一方のswfがグローバル変数を確認し、条件を満たした場合に両方のswfを再生する。 3. 条件を満たしていない場合は一定時間ごとにグローバル変数をチェックし、条件を満たしているかどうかを繰り返す。

質問者が選んだベストアンサー

  • ベストアンサー
  • joy_28
  • ベストアンサー率84% (45/53)
回答No.1

daisukehiさん、 以下でどうでしょうか? //----単純化した例です---- //l外部SWF読み込み用のloaderを2つ作っておく var loader0:Loader=new Loader(); var loader1:Loader=new Loader(); addChild(loader0); addChild(loader1); loader1.x=400;//適当な位置決め //制御変数も2つ作っておく var flag0:Boolean=false; var flag1:Boolean=false; loader0.contentLoaderInfo.addEventListener(Event.INIT,x0Init,false,0,true); loader1.contentLoaderInfo.addEventListener(Event.INIT,x1Init,false,0,true); this.addEventListener(Event.ENTER_FRAME,xEnterframe,false,0,true); //タイムラインで動く外部SWFを2つ作っておき、第一フレーム目に、stop();と記載しておく loader0.load(new URLRequest("0.swf")); loader1.load(new URLRequest("1.swf")); function x0Init(e:Event):void { flag0=true;//読み込み完了したら、trueにし、 } function x1Init(e:Event):void { flag1=true;//同様 } function xEnterframe(e:Event):void { if (flag0==true && flag1==true) {//両方trueなら、 MovieClip(e.target).loader0.content.play();//それぞれのcontent、即ち、0.swfや1.swfを始動させる MovieClip(e.target).loader1.content.play(); this.removeEventListener(Event.ENTER_FRAME,xEnterframe);//不要なので、削除 } }

daisukehi
質問者

お礼

joy_28さん ご回答いただき、ありがとうございます。 1つのswfで、外部swfを2つ読み込み、 xプロパティで1つをうまく右端によせるわけですね。 間違っているかもしれませんが、 この場合、呼び出し元のswfのサイズを、 「画面の横幅分(左の端から右の端まで)」 としなくてはいけないのではないでしょうか? そうしないと、呼び出し元のswfのサイズをはみ出した分は、 表示されないのではないかと思いました。 言葉足らずで申し訳ありません。 以下のように、web画面の中央部には、 普通のテキストなり画像なりを入れたいと考えています。 そのため、横幅分のswfをいれてしまうと、本文を表示出来なく なってしまいます。 -------------------------------------------- サイト名 -------------------------------------------- swf  |         本文        | swf     |                    |         |                    |         |                    |         |                    |         |                    |         |                    |     もしお時間がありましたら、 再度お答えいただけると嬉しいです。

その他の回答 (1)

  • joy_28
  • ベストアンサー率84% (45/53)
回答No.2

間違っているかもしれませんが、 この場合、呼び出し元のswfのサイズを、 「画面の横幅分(左の端から右の端まで)」 としなくてはいけないのではないでしょうか? → 1.先ず、同時再生は出来たのでしょうか?これが、主目的だったと思いますが。 2.位置は、main.swf(読み込み側)とsub0.swf/sub1.swfのサイズを設計し、その上で、どこに表示させるかを決めます。loaderは、外部swfを左上基準で読み込みますから、それを考慮し、且つ、本文のサイズも考慮し、全体サイズを決定する必要があります。

daisukehi
質問者

お礼

joy_28さん 上記の自分の発言への補足です。 main.swfは画面の横幅までのサイズとすると、 真ん中のテキスト部分で右クリックした場合にFlash Playerを 右クリックしたようになるのでは、と書いた件ですが、 CSSのz-indexを1、 真ん中のテキスト部分をz-index=2とすることで、解決しました。 ありがとうございました。 これで解決です。 このたびは本当にありがとうございました。

daisukehi
質問者

補足

joy_28さん、ご回答いただきありがとうございます。 失礼致しました。同時再生はjoy_28さんに教えていただいた方法で 行うことが出来ました。 ありがとうございました。 sub0.swf,sub1.swfが200*768だとすると、 main.swfはディスプレイ横の解像度別で作っておき、jsで解像度を取得して、 各自の環境の合ったサイズのswfを、横の解像度*768として 読み込むことになるのでしょうか? 間違っているかもしれませんが、 これだと本文を中心に入れることが出来ないのではないかと思いました。 CSSなどでうまく入れられたとしても、本文付近を右クリックしたときに Flash Playerのメニューになってしまうのは避けたいと考えております。 それともmain.swfは200*768で作っておき、main.swfで読み込んだsub1.swfを main.swfの外に表示する、ということが可能なのでしょうか? お手数をおかけしますが、お時間がありましたら、 ご回答よろしくお願いします。 なお、全く別の方法ですが、 呼び出し元のmain.swfをmain_send.swf、main_receive.swfとして2つ作り、 LocalConnectionを使う方法を考えてみました。 receive側がsub.swfのロードが終わったら、クッキーを変更し、 send側はsub.swfのロードが終わったら完了フラグ変数を1にする。 send側のthis.addEventListener(Event.ENTER_FRAMEで フレーム毎にsendの完了フラグとreceiveが変更するクッキーを見て、 両方ロードが完了していたら、 send側をplayして、receive側のsub.swfをplayする関数を呼び出す というものです。 なお、sub.swfには1フレーム目にstopが入っています。 これだと少しだけ(1フレーム?)ずれるようです。

関連するQ&A