• ベストアンサー
※ 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

  • 外部SWFの制御、プロパティにアクセスについて

    制作環境:Flash CS5、ActionScript3 外部SWFのプロパティ、フレームの制御について悩んでいます。 まず、外部SWFを読み込むSWF:parent.swf、読み込まれるSWF:child.swfがあるとします。 parent.swfはタイムライン1フレームだけで以下を記述しています。 var swfUrlReq:URLRequest=new URLRequest("./child.swf"); var fileLoader:Loader=new Loader(); var mc:MovieClip=new MovieClip(); fileLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeSwf); fileLoader.load(swfUrlReq); function completeSwf(eventObject:Event):void { mc=fileLoader.content as MovieClip; mc.stop(); addChild(mc); trace(mc.word); } child.swfでは総フレーム55くらいで、添付の画像のように左から右に移動して終わるだけのムービーです。1フレーム目にはvar word:String="読めた!!"; 最後の55フレームにはstop();を記述しています。 でいざパブリッシュしてみるとmc.stop();が効かず勝手にムービーが再生され、おまけに以下の「Error #1069: _01_fla.MainTimeline__Preloader__ にプロパティ word が見つからず、デフォルト値もありません。」のエラーでてしまいます。 どうやったらフレームを制御でき、child.swf内部に設定した変数wordを読めるでしょうか?ネットでいろいろ検索引っかかったのですがどれも解決にはなりませんでした、どなたか教えてください、よろしくお願いします。

    • ベストアンサー
    • Flash
  • 外部swf内関数の使い方を教えてください

    actionscript 3でムービークリップ内に読み込んだ外部swf内の関数の使い方を教えてください。 以下仮ソースです var mc:MovieClip = new MovieClip(); var imgLoader:Loader = new Loader(); var path:URLRequest = new URLRequest("materials/key_550.swf"); var childSwf:MovieClip; imgLoader.load(path); imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,compLoader); function compLoader(evt:Event):void{ mc.addChild(imgLoader); addChild(mc); childSwf = mc.imgLoader.content as MovieClip //ここをimgLoader.content as MovieClipとするといけるのですが、mcの子のloaderと指定したいのです。 startGOGO(); } function startGOGO():void{ childSwf.keyContMove(); //子のswf内の関数です。 } よろしくお願い致します。

  • AS3.0による外部swfの制御

    AS3.0による外部swfの制御 質問させていただきます。 やりたいと事は、メインとなるswfのボタンを押して、 読み込んだ外部swf(stopしている)を再生(play)したいと考えております。 メインのswfはAS3.0、読み込む外部swfはAS2.0になります。 環境はFlash CS3です。 以下がスクリプトになります。 //swf読み込み配置 var loader_obj : Loader = new Loader(); var url : URLRequest = new URLRequest("test.swf"); MovieClip(root).loader_obj.load(url); loader_obj.y = 3 loader_obj.x = 392 stage.addChild(loader_obj); //swfボタン制御 btn.addEventListener(MouseEvent.ROLL_OVER,btn_play); function btn_play(event:MouseEvent):void {MovieClip(root).photo.gotoAndPlay(2);//メインswfのムービーリップも動かす <--ここに外部swfを参照するスクリプトが入ると思うのですが・・・-->gotoAndPlay(2);//外部swfの2フレーム目から再生 } 肝心の所のスクリプトはわかりません・・・ 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 少しづつ%が増えていくプリローダーの作り方

    Actionscript3.0でプリローダーを作成しているところなのですが、なんとなくネットで検索しながら出来てきたのですが、外部ファイルを読み込むときに他のサイトでよく見る少しづつゲージや%が増えていくようになりません。 自分のは一瞬で100%になってしまいます。 これを少しづつ増やしていくやり方ってないのでしょうか? もしあれば是非ご教授お願いします。 ネットでもいくつか載っていたのを試してみたのですが、すべてエラーになってしまいうまくいきません。 一応ここまでは作りました。 ↓↓ var percent:int; var loaded:int; var loadtotal:int; var loader = new Loader(); var rec = new URLRequest("komorebiTown.swf"); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,proHandler); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded); loader.load(rec); addChild(loader); function proHandler(ev:ProgressEvent){ loaded = ev.bytesLoaded; loadtotal = ev.bytesTotal; addEventListener(Event.ENTER_FRAME,loop); } function loop(ev){ percent = Math.floor(loaded/loadtotal * 100); txt.text = String(percent); } function onLoaded(event) { loader.removeEventListener(ProgressEvent.PROGRESS, proHandler); loader.removeEventListener(Event.COMPLETE, onLoaded); }; 他になにか間違っているようなところあれば教えてください。 よろしくお願いします!

    • ベストアンサー
    • Flash
  • AS3での外部swfの制御

    こんにちは。 Flashのコードについて質問させていただきます。 AS3で外部swfを読み込み、制御したいのですが上手くいきません。 ここでいう外部swfはflashで作ったものではなく、aftereffectsでswfで書き出したものです。 var swf:MovieClip; var loader:Loader = new Loader(); var newSWFRequest:URLRequest = new URLRequest("swfs/" + "test" + ".swf"); loader.load(newSWFRequest); addChild(loader); 上記コードでswfを表示+再生は出来ます。 更に、swfを停止、再再生、逆再生などしたいのですが、可能でしょうか? そもそもこのswfにはタイムラインという概念が存在しないので微妙ですが。。。 swf = new MovieClip(); swf .stop(); とか書き足せば、 TypeError: Error #1034: 強制型変換に失敗しました。flash.display::AVM1Movie@231c04a1 を flash.display.MovieClip に変換できません。 が出ます。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 複数のswfを同時に制御したい。

    flash、javascript等について質問です。 制作環境はflash8 professional パブリッシュはflashplayer7~8です。 [やりたいこと] 全く同じswfを使った多数の音楽プレイヤーを制御したい。 [仕様] htmlのtableにて、全く同じswfを配置。 タグでswf?artistID=1のように変数を渡すことで、 アーティストごとに外部mp3やjpgを読み込み再生する。 [問題点] アーティスト1を再生したまま、アーティスト2を再生すると、 アーティスト1が再生されたままアーティスト2の再生が始まってしまう。(同時に2曲重なって再生されてしまう) [自分で試してみたこと] --javascriptでやってみる-- アーティスト1の再生ボタンを押すと、htmlに変数「1」を渡す。 アーティスト2の再生ボタンを押すと、javascriptでhtmlの変数を使い、 再生中のswfを制御(音楽を停止)したい。 ・変数は渡せても、再生中のswfを制御できない。 --localconnectionでやってみる-- 制御する側と、制御される側で、別のswfを作らなくてはならず、 今回のような状況だと不可能だと思われるのです。 --sharedobjectでやってみる-- アーティスト1の再生ボタンを押すと、変数「1」を”playID”に保存。 アーティスト2の再生ボタンを押すと、変数「2」を”playID”に上書き保存。 この時、アーティスト1はenterFrame等で”playID”と”artistID”を比較。 ”playID”は「2」になっているので停止させる。 ・getLocal()は書き込んだswfからしか最新の数値を参照できないらしく、アーティスト2からのgetLocal()は「2」になっていても、他のswfがenterFrame等で呼び出しても最新の数値が呼び出せなかった。 --mouselistenerで強引にやる-- mousedownで全プレイヤーを停止したのち、再生マウスが乗っていたプレイヤーを再生する。 ・mouselistenerはswf領域から外れると使えないので、他のswfは何も変化させることはできない。 - - - - - - - - - - - - - - - - - - - このような状況です。 フルフラッシュなら簡単なことなのですが、SEO対策等もあり、table等で配置という仕様です。 どなたか何か分かる方がいらっしゃいましたらご教示頂けると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 子swfから親swfのstageを参照したいです

    親swf(a.swf)のアクションスクリプトで子swf(b.swf)を読み込んでいます。 フルウィンドウのFlashを作る勉強中です。 親swfには stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; などの指定がしてあります。 そして、子swf(b.swf)内で親swf(a.swf)のstageをターゲットとしたイベントリスナーを使いたいのですが、 リスナー関数のアクションがうまく動いてくれません。 (リスナー関数のターゲット指定の方法が間違っているだと思うのですが、結果としてリスナー関数が正常に動かずy座標の値が意図した位置に表示されないのだと思います。) 以下のサイトを参考に試行錯誤中です。 http://riptac.net/html/memo/memo_actionscript/memo_actionscript_233/ MovieClip(root.parent).funcOya(); と言う、親に記述された関数の参照方法を特に参考にして 親のステージを指定しようと思いたったのですが… 『強制型変換に失敗しました。…flash.display.MovieClip に変換できません。』 とエラーが出てしまいます。 同じ事をしているように思えてしまうのですが… どのように指定したら良いのでしょうか。 どうぞご教授のほど宜しくお願い致します。 ※FlashCS4、AS3、Windowsで作業しています。 a.swf------------------------------------------------------- var bLoader:Loader = new Loader(); var bUrl:String = "b.swf"; var bLoader_mc:MovieClip; bLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, funcCompB); bLoader.load(new URLRequest(bUrl)); function funcCompB(e:Event):void{ bLoader_mc = MovieClip(bLoader.content); addChild(bLoader_mc); } b.swf------------------------------------------------------- //移動させる背景画像 var bgMC:MovieClip=new BgMC(); addChild(bgMC); bgMC.x=0; //親swfをムービークリップ化 var oyaMC:MovieClip=MovieClip(root.parent); //ウィンドウがリサイズするたびに位置を合わせる oyaMC.stage.addEventListener(Event.RESIZE, resizefunc); function resizefunc(event:Event):void{ bgMC.y=oyaMC.stage.stageHeight; }

  • flashを一度だけ再生するHTMLはありますか?

    ループで制作されたswfファイルがあります。 (swfしかないのでstopなどのアクションを入れられません。) 同時に生成されるHTMLタグのobject やparam を変更し、1度だけ再生されるようにすることはできるでしょうか? Windows8 64bit, firefox20でチェックしています。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • swfファイルのライブラリ読込について

    FLASH初心者です。文章に失礼があったらお許し下さい。 windowsXPでFlashMXを使用しています。  A.swf(1フレーム目にstop();を書いています)  を作成しました。  ボタンを押すと画像が出てくる仕組みです。 これをB.swfで使用するため  ファイル→ライブラリに読み込み を選択して、ムービークリップで読み込み、配置しました。 すると、B.swfを  制御→ムービーのプレビュー を選択すると、A.swfがループ再生されてしまいます。 A.swf単体で再生するとループ再生されず、stop();されています。 書籍を読んでもいまひとつわかりません。 他の方の質問と重複しているのかもしれませんが、いまひとつよくわかりませんでした。 ご教示下さい。

  • フルFlash、swfファイルの読み込みについての考え方(as3.0)

    フルFlash、swfファイルの読み込みについての考え方(as3.0) こんにちは。 Flashのas3.0を始めて半年程度の者です。 長文ですが宜しくお願い致します。 下記のような構造のフルFLASHページを作りたいと考えております。 ■大まかな階層構造 ・index.html(opening.swfを100%で読み込む指定) ・opening.swf(最初に流れるアニメーション。最後のフレームに行くとmain.swfを読み込む指定) ・main.swf(フルFLASH) /// opening.swfの最終フレームに記述 /// stop(); var loader:Loader = new Loader(); var url : URLRequest = new URLRequest("main.swf"); loader.load(url); stage.addChild(loader); 上記の記述でmain.swfを読み込むことは出来るのですが、 アニメーションのopening.swfを非表示にする方法が分かりません。 loader.addEventListener(Event.UNLOAD,・・・); という記述でロードしたswfを非表示にする方法は分かるのですが、 opening.swfは直接index.htmlのタグに埋め込んでいる為、うまく機能しないのではと思っております。 ■私が思いついた対策 ・index.html(background.swfを100%で指定) ・background.swf(とりあえずhtmlに埋め込んでおくswf) ←コレを追加!! ・opening.swf(最初に流れるアニメーション。最後のフレームに行くとmain.swfを読み込む。) ・main.swf(フルFLASH) 上記の階層構造で、background.swfを常に背景感覚で表示させ、 opening.swfもmain.swfもloadで切り替えれば実現は出来るかと思います。 只、この方法が一般的に適切な方法なのかどうか疑問に思いました。 オープニングアニメーション ⇒ フルFLASHという流れをつくるには、どういう作り方が一般的なのでしょうか? 出来ればJSは絡ませず、htmlとflashの指定だけで完結出来ればと思っております。 考え方だけどもご教授頂ければ助かります。 何卒、宜しくお願いいたします。

    • ベストアンサー
    • Flash
このQ&Aのポイント
  • MFC-J6983CDWを購入しましたが、Wi-Fiでの接続ができません。
  • 使用環境はWindows11で、無線LAN経由で接続しようとしています。
  • 関連するソフトやアプリは使用しておらず、電話回線も利用していません。
回答を見る