使用SoundTransform类配合SoundChannel对象控制音量。SoundChannel对象包含一个SoundTransform类型的属性,可以创建一个SoundTransform对象,并覆盖这个属性,达到改变声音音量的目的。
SoundTransform的构造函数包含两个参数,第一个为声音的音量,是0至1的小数;第二个参数表示声音的左右声道平衡。可以使用SoundTransform的volumn属性修改一个现有SoundTransform对象的音量值。
下面的代码利用按键“-”和“+”控制声音的大小:
var tempst:SoundTransform;
function keyfunc(eev:KeyboardEvent):void {
var tstr:String=String.fromCharCode(eev.charCode);
switch (tstr) {
……
//减小音量
case "-":
var tempst:SoundTransform;
tempst=sndchannel.soundTransform;
tempst.volume-=0.05;
sndchannel.soundTransform=tempst;
break;
//加大音量
case "=":
tempst=sndchannel.soundTransform;
tempst.volume+=0.05;
sndchannel.soundTransform=tempst;
break;
//停止声音
case "0":
tempst=sndchannel.soundTransform;
tempst.volume=0;
SoundMixer.soundTransform=tempst;
break;
……
}
}
代码中还利用SoundMixer类,停止了所有的声音输出。SoundMixer负责FlashPlayer中声音的混响。如果直接操作SoundMixer的soundTransform属性,将从总体上控制多个SoundChannel的播放效果。代码执行时,可以使用键盘上的“-”和“+”键控制音量的大小,但是如果使用“0”键修改控制总体的SoundMixer对象,则声音将静音,且无法通过改变单个SoundChannel对象发出声音。