C# 在第一个音效结束后播放第二个音效
在我的应用程序中,我使用SoundEffect播放一些声音。我想知道是否有办法知道SoundEffect何时完成运行,以便第二个SoundEffect将在之后立即启动。设置此选项 BufferDescription.GlobalFocus标志=True 这将告诉SoundEffect已完成运行。设置此选项 BufferDescription.GlobalFocus标志=TrueC# 在第一个音效结束后播放第二个音效,c#,audio,C#,Audio,在我的应用程序中,我使用SoundEffect播放一些声音。我想知道是否有办法知道SoundEffect何时完成运行,以便第二个SoundEffect将在之后立即启动。设置此选项 BufferDescription.GlobalFocus标志=True 这将告诉SoundEffect已完成运行。设置此选项 BufferDescription.GlobalFocus标志=True 这将告诉SoundEffect已完成运行。据我所知,XNA不支持此场景 SoundEffect类公开了一个Durati
这将告诉SoundEffect已完成运行。据我所知,XNA不支持此场景 SoundEffect类公开了一个Duration属性,您可以使用它来实现所追求的目标 构建一些“SoundManager”类(基本上是一个简单的调度程序),它将完成声音播放的所有奇妙协调
本课程将启动SoundEffect播放,将下一个播放安排在持续时间结束后进行。据我所知,XNA不支持这种场景 SoundEffect类公开了一个Duration属性,您可以使用它来实现所追求的目标 构建一些“SoundManager”类(基本上是一个简单的调度程序),它将完成声音播放的所有奇妙协调
这堂课将播放一段音效,安排下一段音效完全在持续时间结束后播放。以前的问题,但今天我不得不做同样的事情,我尝试了基于持续时间的方法,但最后用自己的解决方案停止了,这对我来说似乎是最简单的: 1) 创建静态助手类,比如说“SoundsManager”,如麦角酸的答案所示 2) 创建一个SoundSeffectInstances队列,并播放其中的第一个(“\u ScheduledSonds”在下面的代码中) 3) 使用每个游戏循环更新类,并检查soundinstance是否已停止:
public static void Update()
{
if (_sheduledSounds != null && _sheduledSounds.Count > 1)
{
if (_sheduledSounds.Peek().State == SoundState.Stopped)
{
_sheduledSounds.Dequeue();
_sheduledSounds.Peek().Play();
}
}
}
老问题,但我今天不得不做同样的事情,我尝试了基于持续时间的方法,但最终用自己的解决方案停止了,这对我来说似乎是最简单的: 1) 创建静态助手类,比如说“SoundsManager”,如麦角酸的答案所示 2) 创建一个SoundSeffectInstances队列,并播放其中的第一个(“\u ScheduledSonds”在下面的代码中) 3) 使用每个游戏循环更新类,并检查soundinstance是否已停止:
public static void Update()
{
if (_sheduledSounds != null && _sheduledSounds.Count > 1)
{
if (_sheduledSounds.Peek().State == SoundState.Stopped)
{
_sheduledSounds.Dequeue();
_sheduledSounds.Peek().Play();
}
}
}
我不相信XNA支持这一点。我不相信XNA支持这一点。