• 締切済み

サウンドの制御で・・・

初心者ですが、教えていただけると嬉しいです。 簡潔にいうと、サウンドを再読み込みしたときに音を鳴らさない仕組みにしたいのです。 私が作成したデータなのですが、 メインのページ(main.swf)があり、そこにメニューの項目(外部の各1.swf、2.swf、3.swfをムービークリップに読み込む用に設定)があります。 メニュー項目をクリックすると外部にあるSWFを読み込むムービークリップがおいてあるフレームに移動する方法になっています。 main.swfにのみONOFFボタンを作成し、最初にONの状態で 音を鳴らし、ループするようにしてあります。 MCの中にAiffサウンドをいれ、そのプロパティに同期イベント繰り返し999の設定をしています。 メインのページ(main.swf)のONOFFボタン制御はきちんとできているようで、OFFとしたときに、外部SWFページを読み込むフレームに移動したときも同じようにサウンドは止まった状態です。 しかし、ONにしたとき、外部SWFを読み込むフレームに移動したとき音がループしてなり続けているのですが、メインのページに頭からもどったときに、最初に鳴らした音も続いたまま二回目の音が重なって鳴ってしまうのです。 何度も繰り返すと二十三十とダブってしまうのです。 そのため、再度メインに戻ったときに音を読み込まない方法を教えていただきたいのです。 説明不足かもしれませんが、不明な箇所ありましたら補足いたします。 どうか宜しくお願い致します。

みんなの回答

  • EFA15EL
  • ベストアンサー率37% (2659/7009)
回答No.1

ソースが見られないので概念的な説明になりますが… ひとつにはメインから移動する時に音を完全に消去、必要であればサウンドオブジェクト自体をクリアすること。 もうひとつは戻り先を最初のメインページとは似て非なるものにして、読み込みイベントを発生させない事。 あるいはメインの音を削除したりせず、ボリュームの調整だけでコントロールする。 ざっとこんなところが思いつきます。

hinoz
質問者

お礼

早々のお返事ありがとうございます。 スクリプトで、できれば ひとつにはメインから移動する時に音を完全に消去、必要であればサウンドオブジェクト自体をクリアすること。 もうひとつは戻り先を最初のメインページとは似て非なるものにして、読み込みイベントを発生させない事。 との方法をとりたいとおもっていますが、具体的にどのようなスクリプトを記述したらよいか教えていただけると助かります。 宜しくお願いいたします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数の外部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
  • 外部読み込みムービー上の音楽制御

    ステージにムービークリップを置いて、そこに外部のムービーを読み込んでいます。 その外部のムービー上で音楽が流れており、その音楽のボリュームを変えたいと思っているのですが、どうもうまく行かないのです。 下記はボリュームオン・オフ用のムービークリップに書いたスクリプトです。(music_button) //クリックされた時にオン・オフを切り替える on(press){ music = music * (-1); //サウンドのオンオフを切り替える s1_sound.setvolume(music*100); if (music = 1){s1_sound.start();} else{s1_sound.stop();} } 外部のムービークリップ上の音楽には「BGM」という識別子をつけています。 上記のmusic_buttonの置いてあるメインタイムラインの2フレーム前で _global.s1_sound = new Sound(); s1_sound.attachsound("BGM"); という宣言をしています。 何か音楽を制御するための要素が足りないのでしょうか。あるいは、階層の指定などが間違っているのでしょうかね。。。 何か手がかりをご存知の方よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flashでアニメーションとサウンドを違うタイミングでループさせたい

    こんばんは! Flash8を使ってHPにアップするSWFファイルを作成しています。 アニメーションもサウンドもループ再生させたいのですが、アニメーションの長さとサウンドの長さが違いうまくループさせることができません。 アニメーションは56秒、サウンドは1分48秒という感じです。 さらに、サウンドはON・OFFで音が制御できるようになっています。 下記のスクリプトで挑戦してみたのですが、ON・OFFを押すたび音が増えて輪唱のように何重にも重なって聞こえてきます。 「ON・OFFムービークリップ1フレーム目」 stop(); _root.soundA = new Sound(); _root.soundA.attachSound("00000.mp3"); _root.soundA.start(0,999); 「シーンにおいたON・OFFムービークリップ」 on (release) { if (_root.soundA.getVolume()>0) { _root.soundA.setVolume(0); _root.on_off.gotoAndStop("soundoff"); trace(_root.soundA.getVolume()); } else if (_root.soundA.getVolume()<=0) { _root.soundA.setVolume(100); _root.on_off.gotoAndStop("soundon"); } } 質問内容がわかりにくいかもしれませんが、ご回答よろしくお願いします。

  • ボタンサウンド 

    ムービークリップでボタンを作っているのですが、アップ、オーバー、ダウン、アウト各20フレームずつです。オーバーにだけサウンドを入れたいのですが、オーバーの始まるフレームに、サウンドを指定して入れているのですが、クリックしても、音がなってしまうのですが、クリックしても音が鳴らないようにするには、どうしたらいいでしょうか?よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 複数のsoundを1つのon/offボタンで制御したい。

    どなたか助けてください! 1~200フレームまで(仮にパートAと呼びます)にサウンド1をループさせ、 201~400フレームまで(仮にパートBと呼びます)にサウンド2をループさせ、 それを1つのon/offボタンで制御しなければならない状況です。 例えば、100フレームあたりでsoundをoffをしたらサウンド1が消え、 300フレームあたりでsoundをonしたらサウンド2が聞こえる、というようにしたいのですが可能でしょうか? 1つのsoundの制御しかやったことが無いのでお手上げです。 助けてください。よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash lite 1.1での質問です。

    Flash lite 1.1での質問です。 最近Flashをはじめたばかりの初心者です。 とても初歩的な質問かもしれませんが、どなたかご教授頂けると助かります。 <質問内容> メインのswfファイルのルートに配置されているmcというムービークリップを、loadMovie関数で外部swfファイルに置き換えたあと、外部swf内に定義されている変数が参照できません。 (外部のswfには画像データも含まれているので、loadvariables関数は使えません) 【構成】 ・main.swf(メインのswfファイル)   ├btn(main.swfのルートに配置されているボタン)   └mc(main.swfのルートに配置されているムービークリップ) ・gaibu.swf(loadMovieで読み込む外部のswfファイル) 【gaibu.swfのルートタイムラインのActionScript】 msg = "this is gaibu.swf!"; 【やりたいこと】 メインのswfでのボタンアクションで、gaibu.swfをロードし、「action」というルートタイムライン上のラベルに移動します。 on(press) { loadMovie("gaibu.swf","mc"); gotoAndStop("action"); } 「action」に移動した後、ボタンアクションにてloadMovieで読み込んだgaibu.swf内の変数msgを出力したいのですが、何も表示されません。 on(press) { trace(mc.msg); } loadMovie関数を使って外部のswfを読み込むと、(gaibu.swfは色を変えてあるので)読み込みは出来ていると思うのですが、そのswf内で定義されている変数が参照できません。loadMovie関数で読み込んだswf内で定義されている変数は消えてしまうのでしょうか? 分かりにくい説明ですみませんが、宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • FlashMX:外部swfから大元のswf上の指定フレームへ移動させる

    FlashMX:外部swfから大元のswf上の指定フレームへ移動させるには? Flash MX、Windows Vistaです。 大元のswf上で、小さな写真兼その拡大ボタンを20個ほどつくろうとしています。 ●大元swf・・・main.swfとします。 ●大写真Aswf・・・・photo-a.swfとします。 main.swfの小写真ボタンAをクリックすると、 ・レベル1に外部swfとしてphoto-a.swfを読み込み ・main.swfで、拡大ボタンを消さなくてはならないので、停止フレームの直後にボタンだけを消したフレームをつくり、そこにgotoStopさせた そして、photo-a.swfでムービーがひととおり終わったのち、「戻る」ボタンを用意しており、それをクリックすると、 ・直後の「back」というフレームラベルにgotoさせ、だんだん写真が消えていくるトゥイーンをさせたあと、最後のフレームに ------------------------------------------------------ unloadMovieNum(1); mc-menu00.gotoAndPlay("btn_on"); ------------------------------------------------------ と記述しました。 意図は、 (1)今ロードしていたphoto-a.swfを消すこと (2)main.swfのフレームを、拡大ボタンが出現しているひとつ前のフレームに戻す ですが、(2)がなりません。 どのように記述すれば、photo-a.swfからmain.swf上の指定フレームラベルへ移動させることができるでしょうか?

    • ベストアンサー
    • Flash
  • ムービークリップ内に空ムービーを置いて外部SWFをロードするやり方

    ムービークリップ(menu1)このムービーはシーン1に設置してあり、動きはクリックすると右から左に引き出す感じのナビゲーションにしてあります。 それがmenu1,menu2,menu3とありそれぞれ再度押すと元の場所にもどります。 ここまでは完成しているのですが、このmenu1,2,3をそれぞれ押して引き出した後にその引き出した画面にコンテンツを外部swfでロードさせたいのですが、まったく表示されず白い画面のままです。 this.stop(); if(this.onFlag == 0){ //↑左にコンテンツをopenさせ元の位置に戻らぬようストップ //↓menu1外部charch読み込みswf_charchは空ムービー swf_charch.loadMovie("charch.swf"); } このスクリプトをムービークリップmenu1のフレームに書き込んでます。 空ムービー(swf_charch)をつくりmenu1に配置して、インスタンス名もswf_charchにしてあります。 もしかして、ムービークリップ内に空ムービーを入れ子にして外部swfの読み込みは不可能なのでしょうか? それともスクリプトの記述がloadMovieではなく別のスクリプトなのでしょうか? 説明が下手で分かりづらいと思いますが、分かる方いらっしゃいましたら宜しくお願いいたします。

  • 外部swfのフレームを指定して読み込み

    あるムービークリップ(mc1とします)に外部swf(001.swfとします) を読み込むことはできるのですが、 mc1に001.swfを読み込み、001.swfの50フレーム目から再生ということは可能でしょうか。 いろいろと調べたのですが、どうしてもうまくいきませんでした。 ボタンを作りボタンを押したら読み込み50フレーム目から再生という指示を書いたのですが、、、 on (press) { _root.mc1.loadMovie("top.swf"); _root.mc1.gotoAndPlay(50); } 1フレーム目から再生されてしまいます。

  • 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になります。 きっと基本的なところでつまずいているのだと思いますが、原因がわかりません。こちらについても原因がお分かりの方がいらっしゃったらご教示ください。 どうぞよろしくお願いします。