dポイントプレゼントキャンペーン実施中!

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

A 回答 (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 などを制御したい時は、ターゲットパスにご注意ください。
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2005/06/12 02:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!