【发布时间】:2011-12-13 15:18:55
【问题描述】:
我有这个问题:
如何只在游戏中关闭声音?我问是因为我的设置中有两个按钮:打开/关闭音乐和打开/关闭声音。打开和关闭音乐非常容易,因为它使用特定的声道。但是如何只关闭声音的音量(例如,音乐仍在播放,但游戏声音没有)?
当我通过 SoundMixer.soundtransform 静音时,您什么都听不到,所以这不是我想要的。在我的游戏中,所有声音都被放入一个数组中。我的第一个想法是检查阵列中列出的所有声音并关闭音量,但这不起作用。请 - 任何人都可以帮忙吗?非常感谢。
//not working
private var sounds:Array;
private var soundChannels:Array = [];
private var muteSoundTransform:SoundTransform = new SoundTransform();
public function muteSoundOnly():void {
muteSoundTransform.volume = 0;
var soundLength:int = soundChannels.length - 1;
for (var soundCtr:int = soundLength; soundCtr >= 0; soundCtr--)
{
soundChannels[soundCtr].soundTransform = muteSoundTransform;
}
}
【问题讨论】:
-
将声音添加到数组中是一个很好的解决方案。你确定你没有将音乐添加到同一个数组中吗?或者音乐使用与效果相同的变换。
-
您的静音功能是否只被调用一次?还是您只是遗漏了切换静音取消静音呼叫的代码?在这种情况下,您可以只使用一个函数 toggleSoundOnly() 来切换声音。
-
音乐使用不同的 soundChannel(称为 SoundTrackChannel),所以这应该不是问题。是的,我认为该函数只被调用一次。我最初的想法是你设置一次音量。那么我必须循环这个函数吗?
-
好的。我解决了问题。:) 实际上我只是忘记为我的声音事件插入一个公共变量,以便我可以控制音量。我真是个笨蛋!
标签: actionscript-3 audio volume