• 締切済み

動画が始まったらBGMを止めたい

質問させていただきます。 以下のようなサイトを作っているのですが、行き詰ってしまいました…。フルフラッシュのサイトですが、BGMを流しています。そのBGMは「オン/オフ」のボタンでストップすることができます。 サイト内で映像を紹介する箇所がありまして映像が始まったら、自動的にBGMが止るようにしたいのですが、今のところボタンを押して止める方法しかわかりません。(よく映画のサイトである予告編紹介みたいな感じです) 映像のほうは、Flash8でflvを書き出し、メインサイトとは別にウィンドウを開いて、表示させています。 まだまだFlash初心者で、特に音関連は見よう見真似でやっている状態なので、どっち方向に考えていったらいいものやら見当もつきません。 どうかよろしくお願いします。 ディレクトリ構成はこうです。 --index.html  「メイン」.swf  映像用.html(別ウィンドウで開く)  映像.swf  映像.flv 制御バーのスキン.swf 「メイン」.swf内のBGM制御ボタンのスクリプトはこうです。 onClipEvent(load) { oto=new Sound(); oto.attachSound("sound2"); snd.onSoundComplete=function() { this.start(); }; play_flg=true; gotoAndStop(Number(play_flg)+1); } on(release) { if(play_flg) { oto.stop("sound2"); play_flg=false; } else { oto.start(); play_flg=true; } gotoAndStop(Number(play_flg)+1); }

noname#196636
noname#196636
  • Flash
  • 回答数1
  • ありがとう数2

みんなの回答

  • JackB
  • ベストアンサー率33% (107/320)
回答No.1

おそらく映像を流す際にも何かのボタンを押すのでしょうけど、 そのボタンを押した時に(或いは映像が流れるきっかけの時点で) 最後に書かれたplay_flgの判定で音をオン/オフさせる制御をそのまま書けばいいのではないでしょうか。

noname#196636
質問者

お礼

ご回答どうもありがとうございます。 できました…と言いたいところなのですが、まだです…。 でもおかげさまで近付いてきました(笑)。 映像を別ウィンドウで開く時のボタンのことをすっかり忘れて 自動で書き出しされる制御バーのことばかりに気が向いていました。 悪戦苦闘中ですが、なんとかなりそうです。 ありがとうございました。

関連するQ&A

  • FlashsでのBGMのon/offfボタンについて

    以前にこう言う質問 (http://oshiete1.goo.ne.jp/kotaeru.php3?q=1789705)をされているのをみて、同じのようなものを作りたかったので、参考にして作りました。 (初心者なのでよく分からないから、丸写しですが・・・) でも、何種類か作ったflashに挿入したのですがきちんとできないのがあります。 出来ないとは、最初から音楽を鳴らすようしてます。 ボタンを押すとoff、もう一度押すとonのこのonが反応しないのです。 つまり、一度offしてしまうともう音楽が鳴らなくなってしまいます。 以下のように作成しています。 リンゲージの識別子はBGMです。 onClipEvent(load) { snd=new Sound(); snd.attachSound( "BGM" ); snd.onSoundComplete = function() { this.start(); }; play_flg=true; gotoAndStop( Number( play_flg ) + 1 ); } on(release) { if( play_flg ) { snd.stop(); play_flg = false; } else { snd.start(); play_flg = true; } //再生状況に応じたフレームを表示 gotoAndStop( Number( play_flg ) + 1 ); } 音楽の同期は:イベント/繰り返し  にしています。

    • ベストアンサー
    • Flash
  • BGMのoff/on

    はじめまして いつも参考にさせていただいています。 過去記事(http://aol.okwave.jp/qa3439687.html)を拝見し BGMのON,OFFボタンを作成することが出来たのですが、 一度停止し再生すると音楽の最初に戻って再生されてしまいます。 最初に戻らずに停止したところからまた再生されるようにしたいのですが、可能でしょうか? 下記に制作状況記載しました。 お分かりの方がいらっしゃいましたら お教えいただきたく存じます。 何卒よろしくお願いします。 ■ソフトバージョン Flash 8 ■リンケージ設定 識別子: BGM ActionScriptに書き出し:チェック入 ランタイム共有用に書き出し:チェック無 最初のフレームに書き出し:チェック入 ■ボタン用のムービークリップに下記スクリプトを記入 (そのまんまコピペ状態です) onClipEvent(load) { //サウンドを挿入 snd = new Sound(); snd.attachSound( "BGM" ); //無限ループ再生設定 snd.onSoundComplete = function() { this.start(); }; //サウンドを再生 snd.start(); //再生状況を保持する変数 //再生時true、それ以外はfalse play_flg = true; //再生状況に応じたフレームを表示 gotoAndStop( Number( play_flg ) + 1 ); } on(release) { //サウンド再生時は止める if( play_flg ) { snd.stop(); play_flg = false; } //停止中の場合は再生する else { snd.start(); play_flg = true; } //再生状況に応じたフレームを表示 gotoAndStop( Number( play_flg ) + 1 ); }

    • ベストアンサー
    • Flash
  • ゴールデンウィーク中に恐れ入ります、、Flash勉強中のyukiと申し

    ゴールデンウィーク中に恐れ入ります、、Flash勉強中のyukiと申します。 昨夜からずーーっと調べているのですが、、ギブアップ寸前なのでお助け願います。。 フラッシュ8でウェブを作成、フレームを4つに分けて作成しています。 そこのBGMをのせてon/offボタンを入れてます。 下記を拝見し途中まではうまくいきました。 http://okwave.jp/qa/q3342022.html http://okwave.jp/qa/q1789705.html フレーム1では問題ないのですが。 フレーム2ではon/offボタンが切り替わりません。(サウンドはon/offになりますが表示が変わらないのです。) どうしても1つのフラッシュで制御したいのでなんとかこの方法を完成させたいのですが、、 ご指導いただければ幸いでございます。。 フレーム1 onClipEvent(load) { snd=new Sound(); snd.attachSound("bgm"); snd.onSoundComplete =function() { this.start(); }; snd.start(); //サウンドの再生状況を保持する変数 //再生時true、それ以外はfalse play_flg=true; //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); } on(release) { //サウンド再生時は止める if(play_flg) { snd.stop(); play_flg=false; } //停止中の場合は再生する else { snd.start(); play_flg = true; } //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); } フレーム2(snd.start();を抜きました) onClipEvent(load) { snd=new Sound(); snd.attachSound("bgm"); snd.onSoundComplete =function() { this.start(); }; //サウンドの再生状況を保持する変数 //再生時true、それ以外はfalse play_flg=true; //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); } on(release) { //サウンド再生時は止める if(play_flg) { snd.stop(); play_flg=false; } //停止中の場合は再生する else { snd.start(); play_flg=true; } //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); }

    • ベストアンサー
    • Flash
  • シーンをまたいだサウンドon/offボタンの設定

    シーンをまたいだサウンドon/offボタンの設定 お世話になります。 前回の質問で解決に至らなかったので再度お願いしたいと思います。 まず、やりたい事としまして、 ・BGMを一つのボタンでon/offを切り替えたい、音も表示も(ON)(OFF)というように。 ・シーンが1~4まで有り、BGMはシーンの切り替わりに関係なく1つのBGMがループで鳴るようにする。 ・表示したいFLASHとサウンドボタンは別けたくない(ローデング画面を入れてるのでローディングが  終わり次第サウンドがスタートされるようにしたいので1つのFLASHで制御する。) 下記を拝見し途中まではうまくいきました。 http://okwave.jp/qa/q3342022.html http://okwave.jp/qa/q1789705.html シーン1では問題なく音も表示もON/OFF切り替わります。 ただし シーン2以降ではon/off表示切り替わりません。(音はon/offになりますが表示が変わらないのです。) どうしても1つのフラッシュで制御したいのでなんとかこの方法を完成させたいのですが、、 ご指導いただければ幸いでございます。。 現在の行ってる方法としては、リンケージの設定を行い、Sound クラスで制御。 ON 、 OFF ボタンをムービークリップとして作り、フレーム1に OFF、フレーム2に ON の時に表示する絵を描いて、 そのボタンをそれぞれのシーンへ配置。 下記アクションスクリプトを記述 まず シーン1 ローデイィング終了と同時にBGMスタートさせたいので フレーム3に onClipEvent(load) { snd=new Sound(); snd.attachSound("bgm"); snd.onSoundComplete =function() { this.start(); }; snd.start(); //サウンドの再生状況を保持する変数 //再生時true、それ以外はfalse play_flg=true; //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); } on(release) { //サウンド再生時は止める if(play_flg) { snd.stop(); play_flg=false; } //停止中の場合は再生する else { snd.start(); play_flg = true; } //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); } そしてループの際音がダブってスタートしないようにsnd.start();を抜き、これ以降は シーン1フレーム3のsnd.start()を通らないおうタイムラインで制御。 フレーム4、シーン2以降のフレーム1に下記アクションを記述。 onClipEvent(load) { snd=new Sound(); snd.attachSound("bgm"); snd.onSoundComplete =function() { this.start(); }; //サウンドの再生状況を保持する変数 //再生時true、それ以外はfalse play_flg=true; //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); } on(release) { //サウンド再生時は止める if(play_flg) { snd.stop(); play_flg=false; } //停止中の場合は再生する else { snd.start(); play_flg=true; } //再生状況に応じたフレームを表示 gotoAndStop(Number(play_flg)+1); } ゴールデンウィークはこれを調べるので潰れてしまいました。。。(泣 しかも今だ解決できていません。 どうか皆々様方よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • flashのBGMのoff/onボタン

    はじめまして。Flashがまだよくわかっていない初心者です。マニュアル本、こちらのhttp://oshiete1.goo.ne.jp/qa1789705.htmlを参考にやってみましたが、わかりません。お願いです。教えてください。 最初に開いたらBGMがデフォルトで鳴っていて、「サウンドOFF」ボタンを押すとBGMは停止し、アニメーションは最後までという内容です。 現在の状況および作成手順ですが、 「シーン1」には2つレイヤーがあり、1つ目のレイヤーは「but」とし、これにはサウンドOFF/ONのムービークリップを配置してあります。フレームは1つだけで、ここに下記を記述(action)しました。 ---------------------------------------- onClipEvent(load) { //サウンドを挿入 snd = new Sound(); snd.attachSound( "BGM" ); //無限ループ再生設定 snd.onSoundComplete = function() { this.start(); }; //サウンドの再生状況を保持する変数 //再生時true、それ以外はfalse play_flg = false; //再生状況に応じたフレームを表示 gotoAndStop( Number( play_flg ) + 1 ); } on(release) { //サウンド再生時は止める if( play_flg ) { snd.stop(); play_flg = false; } //停止中の場合は再生する else { snd.start(); play_flg = true; } //再生状況に応じたフレームを表示 gotoAndStop( Number( play_flg ) + 1 ); } ---------------------------------------- 2つ目のレイヤーには「写真」という名前で写真5枚がフェードインアウトしながら切り替わる、というムービークリップを制作しました。 これをプレビューすると、ムービーは実行されますがBGMは鳴りません。また「サウンドOFF」「サウンドON」のボタンが繰り返してしまいます。 デバック出力で下記エラーと表示されます。 ---------------------------------------- **エラー** シーン = シーン 1, レイヤー = but, フレーム = 1 :行 1:クリップイベントはムービークリップインスタンスでのみ使用可能です。 onClipEvent(load) **エラー** シーン = シーン 1, レイヤー = but, フレーム = 1 :行 21:マウスイベントはボタンインスタンスでのみ使用できます。 on(release) ActionScript エラー数 :2 報告済みエラー :2 ---------------------------------------- どうかどのようにしたらいいのか教えてください。お願いします。

  • とめたBGMをもう一度ならしたい

    メインとなるswfにあるボタン(PlayBT)をクリックすると、外部swfファイル(アニメーション)を 表示するというのを作りました。 (アニメーションが表示されている最中、下にあるメインのswfファイルはボタン(PlayBT)を クリックする前の状態と全く同じ状態のまま停止) メインのswfファイルにもBGMがあり、読み込む外部swfファイルにも異なるBGMが あるため、音がダブらないように ボタン(PlayBT)にloadMovieNumとともにstopAllSound()を書き込みました。 読み込んだアニメーションはもう1つ上の階層に読み込んだ、 もう一つの別のswfファイルにあるボタン(closeBT)で unloadMovieNumを使って閉じるようにしてあります。 アニメーションを閉じて、メインのswfに戻ってきた時に、 stopAllSoundで音を止めてしまってたBGMをまた鳴らしたいんです。 メインのBGMは全部で数個あるシーンのうち、最初のシーンにフレームに貼り付けてあるだけです。 (PlayBTがあるシーンとは別のシーンです。) closeBTをクリックするとメインのswfのBGMが再開するような方法、 もしくはそんなふうに見せる方法があればぜひお願いいたします。 追記: level0:メインのswfファイル level2:アニメーションswfファイル level3:level1、level2のswfファイルを消すためのボタン(closeBT)があるだけのファイル

    • ベストアンサー
    • Flash
  • flashで、 サウンドONで始まりON/OFFボタンで制御したい

    サウンドが鳴っている状態で始まり、それをON/OFFボタンで制御したいのですが、参考書やネットに載っているものを参考に作ろうとしているのですが、どうしてもできません。 サウンドなしの状態で始まり、それをON/OFFボタンで制御するものは、http://oshiete1.goo.ne.jp/qa2790650.html にある、serial74さんの回答を使わせていただきました。 これを応用すればきっとできるのだと思いますが、参考書を一通り終えた初心者で、いろいろと変えてみたのですがわかりません。 どなたか教えていただけると大変助かります。 以下、“FLASHでサウンドのON/OFFボタンでBGMの再生を制御したい”の質問へのserial74さんの回答です。 引用はじめ-------- may_07さんの求めていらっしゃるレベルが分からないので細かく書いていますが「こんなの知ってるよ」と気を悪くなさらないでくださいね。 ▼コレをボタンにしたいムービークリップに書いてみてください。 ************************* onClipEvent(load){ Oto=new Sound(); //サウンド用空オブジェクトOtoを作る Oto.attachSound("xxxxxx"); //Otoにサウンドを割り当てる SoundFlag=false; //音の状態フラグをfalse=鳴っていないにしておく } onClipEvent(enterFrame){ this.onPress=function(){ //コレをクリックしたとき if(SoundFlag==true){ //音が鳴っていたら Oto.stop(); //音を止める SoundFlag=false; //音の状態フラグを切り替える } else{ //音が鳴っていなかったら Oto.start(0,999); //音をループ再生 SoundFlag=true; //音の状態フラグを切り替える } } } ************************* ●すでに音の読み込みができている状態でしたらonClipEvent(load){}内はムシしてください。 ●「Oto」「SoundFlag」は変数なので自分のわかりやすい名前にしてください。 ●「xxxxxx」はライブラリを開く→読み込んだサウンドを選択→ライブラリのメニュー→リンケージ→識別子でつけた名前です。 ●サウンドをスクリプトで扱うときは、サウンド自体に名前(識別子)をつけて、さらにサウンドオブジェクトにしてあげて(よく「関連づける」と言われます)、サウンド オブジェクトの設定をいじる、といった流れです。 引用おわり-------- serial74さんの回答のとおりに私が作ると、ボタンを押しても1回目は反応がなく2回目にサウンドONになります。(ブラウザを通した場合) ブラウザを通さずswfそのものでは、ボタンを押すと1回目でONになります。 きっと基本的なところでつまずいているのだと思いますが、原因がわかりません。こちらについても原因がお分かりの方がいらっしゃったらご教示ください。 どうぞよろしくお願いします。

  • BGMが二重になります。

    フレーム構成↓ 1234     5678 ■■■■ボタン→ ■■■■ボタン→フレーム1に戻る 最初のタイムライン1から8まで続けて同じBGMを鳴らしています。 1234のボタンを押すと5678のフレームをジャンプします。 ここまでは問題ないのですが、5678から1234に戻るボタンを押してフレームをジャンプするとBGMが二重になります。 最初の画面から画面を閉じるまで同じBGMを鳴らし続けたいのですが、これを5678から1234に戻る時、BGMが二重にならない方法を教えて下さい。 以下は1番目のアクションスクリプトに記入しております。 var bgm:oto = new oto (); var bgmoto:SoundChannel = bgm.play (0,10); bgmoto.addEventListener (Event.SOUND_COMPLETE, replay); function replay (event:Event) :void { bgmoto = bgm.play (0.10); bgmoto.addEventListener (Event.SOUND_COMPLETE, replay); }

    • ベストアンサー
    • Flash
  • クロスドメインによるswf読み込みと相互制御

    環境:as2.0 Flash8 winXPです。よろしくお願いします。 本サイトhttp://www.aaa.com下にある親swf【aaa.swf】から mcLoader.loadClip("http://www.bbb.com/bbb.swf", yomikomi_mc); で別ドメインhttp://www.bbb.com下にある子swf【bbb.swf】を読み込み 相互制御したいと考えています。 それぞれに 親swf System.security.allowDomain("bbb.com"); 子swf System.security.allowDomain("aaa.com"); と書いています。 読み込みと、親swfから子swfへの制御は出来るのですが yomikomi_mc.gotoAndStop(2);//などは問題なく動く 子swfから親swfへの制御ができません。 同じドメイン下にある時には制御できるのですが、クロスドメインから読み込むと、 制御できません。 制御できない部分を詳しく記述させて頂きますと、子swfは lockroot = true; としていますので親swfへのパス、 _root._parent._root=gotoAndStop(3); やグローバル変数(親swfで指定_global.hensuu=5;) trace(hensuu); などがundifinedとなってしまいます。 親swfファイルへの制御許可の記述が System.security.allowDomain("aaa.com"); ということではないのでしょうか?記述の仕方が問題でしょうか? 親swfへのパスが変わってしまうのかとも思い色々試してみたのですがうまくいきません。 ご教授頂ければ幸いです。よろしくお願いいたします。

  • 複数の外部SWFの読み込みする場合のサウンド制御について

    1~5.swfが存在し、それらをMain.swfから読み込み順番に再生するようにしています。 Main.swfの1フレーム目に→ stop();_root.seen1.loadMovie("1.swf"); 1.swfの最後に→ _root.nextFrame(); Main.swfの1フレーム目に→ _root.seen2.loadMovie("2.swf"); 2.swfの最後に→ _root.nextFrame(); これを1~5まで同様に設定し5.swfが終わると1.swfが始まりループするように設定し問題なく動いています。 1~5.swfには、それぞれ異なるBGMを設定しています。 ココで質問なのですが、よくあるBGMの「ON/OFFボタン」を作成しサウンドを制御したいのです。 1.swfに「ON/OFFボタン」を作成して「OFF」を選んでも、次の2.swfではまた再生されてしまいますので、「ON/OFFボタン」はMain.swfに設置したいと考えています。 Main.swfに「ON/OFFボタン」を設置して、1~5.swfのサウンドを制御するう方法を教えて下さい。 宜しくお願いします。 補足が必要な場合は言って下さい。

    • ベストアンサー
    • Flash

専門家に質問してみよう