Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在第一个音效结束后播放第二个音效_C#_Audio - Fatal编程技术网

C# 在第一个音效结束后播放第二个音效

C# 在第一个音效结束后播放第二个音效,c#,audio,C#,Audio,在我的应用程序中,我使用SoundEffect播放一些声音。我想知道是否有办法知道SoundEffect何时完成运行,以便第二个SoundEffect将在之后立即启动。设置此选项 BufferDescription.GlobalFocus标志=True 这将告诉SoundEffect已完成运行。设置此选项 BufferDescription.GlobalFocus标志=True 这将告诉SoundEffect已完成运行。据我所知,XNA不支持此场景 SoundEffect类公开了一个Durati

在我的应用程序中,我使用SoundEffect播放一些声音。我想知道是否有办法知道SoundEffect何时完成运行,以便第二个SoundEffect将在之后立即启动。

设置此选项 BufferDescription.GlobalFocus标志=True

这将告诉SoundEffect已完成运行。

设置此选项 BufferDescription.GlobalFocus标志=True


这将告诉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支持这一点。