AS3:全体のサウンド制御 音量を0にする
コンテンツ全体の音量(や音関連) の調整は
AS2まででいうところの
var mySound = new Sound(_root);
mySound.setVolume(0);
※上の例は音量を0にしている
AS2まででは、MovieClipをSoundクラスに渡してnewし
それにたいしてsetVolumeでvolumeをコントロール!
渡したMovieClipの下位階層すべてのサウンドがコントロールできる
というスタイルだった
AS3では….
グローバルなサウンドのコントロールは
flash.media.SoundMixer クラスを使って制御するよう
import flash.media.*;
var mySoundTransform = SoundMixer.soundTransform
mySoundTransform.volume=0;
SoundMixer.soundTransform = mySoundTransform;
注意したいのは
SoundMixer.soundTransform.volume=0;
としないコト
一度変数にSoundMixer.soundTransformを代入する
例のようなスタイルでやること
AS2の時のようにMCの階層でサウンド制御をするのは
簡単にはいかなそうかなぁ…?!
まあいいや
とりあえず、Classにしてみるとこんな感じ
package {
import flash.media.*;
public class GlobalSound{
private static var sf:SoundTransform;
/*
* public
*/public static function set volume(n:Number){
getST().volume=n;
SoundMixer.soundTransform = getST();
}public static function get volume():Number{
return getST().volume;
}/*
* private
*/private static function getST():SoundTransform{
if(!sf) sf = SoundMixer.soundTransform;
return sf;
}}
}
追記:
feb19.jp blogさんのエントリがあった
AS3で音のボリュームやパンを操作する
SoundMixerのsoundTransform じゃなくて、rootのsoundTransform をコントロール!
flash.display.SpriteにsoundTransform がありました!
これでこれまでのスタイル(親でコントロール、親にコントロールされる)ができる







コメントをどうぞ