Flash:当其他声音效果播放时如何降低背景音乐?

时间:2012-12-31 19:07:15

标签: actionscript-3 flash

我使用的是库中的声音文件,而不是网址。

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

我还有其他几个播放声音的按钮。我希望背景音乐音量降低到0.3,而其他声音正在播放。我相信我需要创建一个像soundCount这样的变量,当声音播放时会上升,当声音播放完毕时会减少(这样如果一次播放多个声音,背景音乐将不会恢复正常直到计数是0)。

设置此功能的最佳方法是什么?我创建了soundCount变量,但是当声音效果完成播放时我无法创建事件监听器。

1 个答案:

答案 0 :(得分: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.

最后,当计数为0时,修改SoundTransform的{​​{1}}成员:

volume