【问题标题】:turn off sound only - how?只关闭声音 - 如何?
【发布时间】: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


【解决方案1】:

我认为这样做更容易:

var soundsON = true;

然后在播放任何音效之前,请确保声音已开启,如下所示:

if (soundsON) {
 mySound.play();
}

如果您将静音按钮设为soundsON = false;,您的音效将不会播放。

【讨论】:

  • 在播放声音并按下静音按钮时,您不会处理这种情况。
猜你喜欢
  • 2018-10-31
  • 2011-05-10
  • 2022-10-25
  • 1970-01-01
  • 2010-09-07
  • 1970-01-01
  • 1970-01-01
  • 2013-09-12
  • 2012-09-03
相关资源
最近更新 更多