• ベストアンサー

音声制御に関して

BGMを流しながら 音声を重ねたいのですが その際BGMの音量を下げたいのです しかし BGMを下げると 音声も下がってしまいます 片方は上げて 片方は下げる といったことは できるのでしょうか

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

できますよ。 2つの音を細かく制御するには、ムービークリップと Sound オブジェクトを2つ用意し、Sound オブジェクトではそれぞれのムービークリップの音を管理するようにします。 このあたりの詳しいロジックについては、以前、別の質問で説明したことがありますので、よろしければご参照ください。 #1で説明しております。  ・2つの音のボリューム制御   http://okweb.jp/kotaeru.php3?q=1126512 --------------------------------------------- お使いの Flash のバージョンが書かれていませんので、とりあえず、Flash MX 以降として説明させていただきます。 以下のスクリプトは、Flash 5 以前の Flash では正常に動作しません。 スクリプトで音を鳴らすには、まず、リンケージという設定が必要です。 「ライブラリ」でサウンドシンボルを選び、右クリック( Mac では control +クリック)で出すメニューから「リンケージ」を選択して、「識別子」に何か名前を付けてください。ここでは仮に、BGMに” BGM ”、音声に” VOICE ”と付けたとします。 Sound オブジェクトで設定したボリュームや鳴らすサウンドシンボル・onSoundComplete の定義などは、シーンが変わったり、1度止めて再度再生した時でも、特に変更しない限りはずっと引き継がれます。 音に関する大まかな設定は、フレーム1でまとめて済ませておくといいでしょう。 (↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)  //ダミーのムービークリップを作る  this.createEmptyMovieClip( "bgm_clip" , 0 );  this.createEmptyMovieClip( "voice_clip" , 1 );  //BGM用のオブジェクトの生成と、BGMを挿入  bgm = new Sound( "bgm_clip" );  bgm.attachSound( "BGM" );  //ボリュームを最大に設定  bgm.setVolume( 100 );  //再生終了時の処理を定義  bgm.onSoundComplete = function()  {   //再生終了時、自動的にループ   this.start();  };  //BGMを再生  bgm.start();  //音声用のオブジェクトの生成と、音声を挿入  voice = new Sound( "voice_clip" );  voice.attachSound( "VOICE" );  //ボリュームを最大に設定  voice.setVolume( 100 );  //再生終了時の処理を定義  voice.onSoundComplete = function()  {   //BGMのボリュームを元に戻す   bgm.setVolume( 100 );  }; 例えばこのスクリプトをフレーム1で実行すると、BGMはフルボリューム(ボリューム= 100 )で再生され、無限ループ再生になります。 音声のサウンドシンボル(のインスタンス)は挿入されますが、voice.start を実行するまでは再生されません。 おそらく、音声は途中から入るのだと思います。 音声を鳴らす時は、  //BGMの音量を下げる  bgm.setVolume( 50 );  //音声を再生  voice.start(); このように、音声を再生する前にBGMのボリュームを下げ、再生が終了した時点でボリュームを戻しておくといいでしょう。 上記のスクリプトでは、Sound オブジェクト・voice で発生する onSoundComplete イベントを利用して、BGMのボリュームを元に戻しています。 bgm オブジェクトではムービークリップ bgm_clip 、voice オブジェクトでは voice_clip の音を制御していることになっています。 bgm.setVolume を実行しても、voice オブジェクトで鳴らしている音のボリュームは変化しません。 上記の例ですと、Sound オブジェクトは2つとも _root にあります。 ムービークリップからボリュームや音声の ON / OFF などを制御したい時は、ターゲットパスにご注意ください。

mmmmmm00
質問者

お礼

ありがとうございました

関連するQ&A