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で、全てのサウンドのボリュームを更新しないといけないのだけど、おおまかこんな感じ。