0

我正在使用库中的声音文件,而不是 URL。

我正在制作一个音板,并有一个播放背景音乐的按钮。我有一个按钮而不是在加载时自动播放的原因是有几种不同的背景音乐可供选择,每个都有自己的按钮。

我还有其他几个播放声音的按钮。我希望在播放其他声音时背景音乐音量降低到 0.3 左右。我相信我需要创建一个像 soundCount 这样的变量,当声音播放时它会增加,当声音播放完毕时会减少(这样如果同时播放多个声音,背景音乐在计数之前不会恢复正常)为 0)。

设置它的最佳方法是什么?我创建了 soundCount 变量,但在音效播放完毕时创建事件侦听器时遇到问题。

4

1 回答 1

3

要在 AS3 中更改声音的音量,您需要使用SoundChannelSoundTransform类:

var backgroundMusic:Sound = // Assuming you've loaded a sound

var myChannel:SoundChannel = new SoundChannel();
myChannel = backgroundMusic.play();

var myTransform = new SoundTransform();
myChannel.soundTransform = myTransform;

通过在调用期间增加计数并在事件期间play减少计数来跟踪背景中的总声音。SOUND_COMPLETE将事件侦听器添加到其他声音的通道,以便他们可以修改background的音量:

var totalCurrentSounds:int = 0;

otherSoundChannel.addEventListener(Event.SOUND_COMPLETE, otherSoundComplete);
// Make sure this is on a SoundChannel, not the Sound itself.

最后,在count为0时修改SoundTransform'成员:volume

function otherSoundComplete(e:Event):void {
    totalCurrentSounds--;
    if (totalCurrentSounds <= 0) 
        myTransform.volume = 0.5;
}
于 2012-12-31T19:24:57.977 回答