• 締切済み

Flash フレームを移動しても音が残ってしまう

Flash フレームを移動しても音が残ってしまう 初心者です。フレーム間の移動について質問させて下さい。 1フレーム目にメニューボタンを配置し、ボタン1クリック(gotoAndStop(5))で、動画再生のSWFを配置した5フレーム目へ飛ばしています。 1フレームのボタン2クリック(gotoAndStop(4))で、画像を配置した4フレーム目へ飛ぶようにしています。 ボタン1で5フレームで動画を再生、その最中にボタン2をクリックするとステージ上は4フレーム目になりますが、再生中の動画の音声が消えません。 どういう処理が必要なのか具体的に教えていただけませんでしょうか。 AS3.0になります。

みんなの回答

  • BumeshiOK
  • ベストアンサー率92% (12/13)
回答No.2

IDがちょっと違いますが、No1と同一人物です。 swf読み込みですか、、それは重要な情報ですよ。。。 その他にも、 そのswf内のビデオデータは埋め込みですか?それとも外部参照ですか? 外部参照であればFLVPlayBackコンポーネントを利用ですか? そもそもビデオSWFは編集不可だったりしませんか? 以下、FLVPlayBackで、編集可能と仮定した場合です。 /*5フレーム目のスクリプト*/ var mov = new Loader(); mov.load(new URLRequest("video.swf")); mov.contentLoaderInfo.addEventListener(Event.INIT,setIndex); function setIndex(e:Event){ addChild(mov); //video.swf内にvidというFLVPlayBackコンポーネントが配置されていることを前提 mov.content.vid.activeVideoPlayerIndex = 1; mov.content.vid.visibleVideoPlayerIndex = 1; mov.content.vid.source = "hoge.flv"; mov.content.vid.play(); } //ビデオの消去関数。フレーム移動ボタンから実行させれば良い。 function removeVideoPlayer(){ removeChild(mov); mov.content.vid.closeVideoPlayer(1); mov = null; } stop(); タイムライン埋め込みの場合はちょっと面倒そうですね。 正直、可能であればFLVPlayBack使った方がいいです。 Flashファイルのフレームレートの影響もないし、操作もラクチンなので。 私ももう何年も埋め込みの手法は採用してませんので。 まぁ、これを機にちょっと勉強してみます。

shibakic
質問者

お礼

ご丁寧にありがとうございます。とても嬉しいです。 私の説明下手のため、回答者様にご面倒をおかけしていることをお詫びします。 ご説明いただいた内容で頑張ってみます。 とりあえず、今までの状況をお知らせします。 HPをオールフラッシュに変更するため、再構築中です(これ不要?) 最初の画面にビデオが載るとわずらわしいのでボタンで画面に出てくる形にしようと考えました。 1 video.flaを作成 これはFLVPLAYERの外部スキン.swfを呼んで、外部フォルダにある複数flvを参照させるものにしました。flvは選択できるように画面横に表示されるようにしています。ここまでで半年かかりました。video.swfで書き出し。 2 親swfを作成 5フレーム目(とりあえず)にvideo.swfを読み込ませています。 ボタンで5フレーム目に飛ばして、video.swfを画面に表示。 そこでビデオを選択して再生させる。 ここまでは無事に動いています。 ここで他のボタンを押して違うフレームに飛ばしたときに、5フレームの内容が残ってしまっているという状況です。 理想はボタンで違うSWFを親に呼び出し、他のボタンで内容入替というものなのですが、これは私の今の能力ではとても無理なので、フレーム間の移動で親画面に出てくるものを変えていくという方法にしました。これ自体が稚拙だったのかもしれません。

shibakic
質問者

補足

残念ながら効かないようでした。 ありがとうございました。

  • bumeshi
  • ベストアンサー率100% (4/4)
回答No.1

FLVPlayBackコンポーネント使用でしょうか。 ステージに配置したコンポーネントのインスタンス名を「mov」とした場合、 フレーム5に入った時に、 mov.activeVideoPlayerIndex = 1; mov.visibleVideoPlayerIndex = 1; としておき、 そのフレームから離脱するときに、 mov.closeVideoPlayer(1); とします。 埋め込みの場合は、埋め込んだビデオのインスタンス名でいけると思います。 番号1にビデオを予約して再生→離脱する時は明示的に閉じる。 といった感じで捉えてくれれば宜しいかと。 AS3.0は「使ったらしまう」という行儀いい組み方をしないといけません。

shibakic
質問者

お礼

回答いただきましてありがとうございます。 試行してみましたが、やり方がよく理解できていないのでうまくいきません。 外部SWFを5フレームに読込で表示、ステージ上には何もない状態です。 インスタンス名がつけられないため、movというインスタンス名をつくり、そこにSWFを載せる?ようにしました。 「フレーム5に入った時に」 「そのフレームから離脱するとき」 というご説明がちょっとわからないくて困ってます。 mov.activeVideoPlayerIndex = 1; mov.visibleVideoPlayerIndex = 1; mov.closeVideoPlayer(1); の3つを、5フレーム目のmovに記述するということなのでしょうか。