Entries

Soundクラスにマスターボリュームを実装する

ミキサーみたいに、Soundクラスにマスターボリュームがあって、全ての音を等間隔でフェイドアウトできるとステキだな、と思って書いてみた。 target指定しないSoundで0にすると、こんど音戻したときに全ての音が100とかになってしまって、音のバランスがぶっ壊れるのが微妙。

class SoundExt extends Sound{
private static var masterVolume:Number = 100
private var __volume:Number = 100;

public function setVolume( val ){
__volume = val;
super.setVolume( __volume * masterVolume / 100)
}

public function getVolume():Number{
return __volume
}
}

こんな風にすると、マスターボリュームを変更すると全ての音が等しい比率で増減できる。実際には、Soundインスタンス作成時に自身をリスナ登録して、masterVolumeのsetterで、全てのサウンドのボリュームを更新しないといけないのだけど、おおまかこんな感じ。