在第一个音效完成后播放第二个音效

本文关键字:音效 播放 第二个 第一个 | 更新日期: 2023-09-27 17:52:43

在我的应用程序中,我使用SoundEffect来播放一些声音。我想知道是否有一种方法可以知道一个声音效果什么时候结束它的运行这样第二个声音效果就会在它结束后立即开始

在第一个音效完成后播放第二个音效

据我所知,XNA不支持这种场景。

SoundEffect类公开了一个Duration属性,你可以使用它来实现你想要的效果。

构建一些"SoundManager"类(基本上是一个简单的调度器),它将完成所有声音回放的花哨协调。

这个类将触发一个SoundEffect播放,调度下一个恰好发生在持续时间经过之后。

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

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();
                }
            }
        }

设置BufferDescription。GlobalFocus flag = True;

这将告诉一个声音效果完成它的运行