2011-04-22 88 views

回答

1

的老问题,但我今天做同样的事情,我尝试了一种基于持续时间,但最终与自己的解决方案停止了,这似乎是最简单的我:

1)创建静态辅助类,让我们说'如'在麦角酸答案中的'SoundsManager'。

2)创建一个SoundsEffectInstanses队列并播放其中的第一个(以下代码中的“_sheduledSounds”)。

3)更新类,每场比赛循环,如果soundinstance停止检查:

public static void Update() 
     { 
      if (_sheduledSounds != null && _sheduledSounds.Count > 1) 
      { 
       if (_sheduledSounds.Peek().State == SoundState.Stopped) 
       { 
        _sheduledSounds.Dequeue(); 
        _sheduledSounds.Peek().Play(); 
       } 
      } 
     } 
0

设置为 BufferDescription.GlobalFocus flag = True;

这将告诉SoundEffect完成其运行。

+0

,我不相信这是XNA支持。 – 2011-04-22 18:53:33

2

据我所知,XNA不支持这种情况。

SoundEffect类公开一个持续时间您可能用于实现您的目标的属性。

建立一些“SoundManager”类(基本上是一个简单的调度程序),这将做声音回放的所有幻想协调。

此课程将触发SoundEffect播放,安排下一个恰好在之后发生,持续时间已过。

相关问题