電子書籍の厳選無料作品が豊富!

SoundオブジェクトのattachSoundを利用して、フレームに音声を割り当て、再生しているのですが、
最初の出だし部分の音だけが、setVolumeで設定した音量を無視して、ライブラリに取り込んだままの音声で再生されてしまいます。
その後は、setVolumeで設定した音量にすぐにもどります。

自分的には、インスタンス化したSoundがsetVolumeで制御されるよりも先に再生されてしまう為、出だし部分だけ音量制御が利かないのでは?
と思うのですが、良い解決方法がみつからず、悩んでおります。

コードは下記のようにしてます。
bgSound = new Sound(this);
bgSound.attachSound("sound1");
bgSound.start(0, 1);
slider.slideBar._y = -30;
slider.slideBar.onEnterFrame = function() {
    bgSound.setVolume(0-this._y);
}
slider.slideBar.onEnterFrame = function() {
bgSound.setVolume(0-this._y);
_global.vol = this._y
};
slider.slideBar.onPress = function() {
startDrag(this, false, this._x, -60, this._x, -0);
};
slider.slideBar.onRelease = slider.slideBar.onReleaseOutside=function () {
stopDrag();
};
宜しくお願いします。

A 回答 (1件)

bgSound.start を実行する前に、setVolume でボリュームの初期値を設定してみてください。



(↓各行頭に全角のスペースが入っています。コピーする際はご注意ください)


 bgSound = new Sound( this );
 bgSound.attachSound( "sound1" );
 bgSound.setVolume( 30 ); //←この1行を追加
 bgSound.start( 0 , 1 );



サウンドのボリュームは、デフォルトではフルボリュームである 100 に設定されています。
特に指定がなければ最大音量で再生が始まります。

ご提示のスクリプトですと、setVolume を実行しているのは enterFrame イベントにより呼び出される関数の中だけです。
この setVolume が実行されるタイミングが、サウンドインスタンスの出現(ボリュームを設定していないため、ボリューム 100 で再生が始まっている)よりもわずかに遅れることが原因と思われます。


通信回線を介して再生する時は、予め setVolume を実行していなくても上手くいく場合もあるようです。
しかし、あまりアテにはならないので、再生する前にボリュームを設定しておく方が無難だと思います。
    • good
    • 0
この回答へのお礼

なるほど。。。。
この現象が発生する音声と、発生しない音声があった為、両者の違いがわからず、半分あきらめていました。
根本的な事が原因だったようですね。
大変助かりました。ありがとうございます。

お礼日時:2007/02/18 18:57

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