c# - 当声音仍在播放时,Windows Phone 8 上的 XNA 会循环播放音频

标签 c# audio xna visual-studio-2012 windows-phone-8

我需要一种在声音仍在播放时开始/停止循环的方法。我发现同时播放多种声音的最佳方式是使用 XNA。因此,我从包含音频剪辑的 SoundEffect 对象开始创建了一个 SoundEffectInstance。 现在的问题是我有一个按钮可以将此剪辑的状态从“循环”更改为“非循环”,反之亦然。

问题来了: 它抛出一个异常,说明必须在第一次播放之前设置循环。 所以我想,当从“非循环”切换到“循环”时,我可以等待声音停止,然后重新创建 SoundEngineInstance,设置 IsLooped = true并让它重新开始。 这个可以用,但是有一些延迟,这会让你失去时间,所以它没什么用。

我正在寻找一种在播放声音时设置或取消设置循环且没有任何延迟的方法。

编辑:

我尝试使用两个 SoundEngineInstance,一个循环,一个不循环,然后使用音量在它们之间简单地切换。 问题是非循环片段在第一次播放后就停止了,所以如果我循环两次然后将其置于非循环状态,则不会播放任何声音,因为非循环片段已经结束!

建议?

最佳答案

我有同样的问题,我使用了两个具有相同音频片段的实例来解决它,一个有循环,一个没有。我在两者之间切换。这可能不是最好的解决方案,但对我有用。

关于c# - 当声音仍在播放时,Windows Phone 8 上的 XNA 会循环播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345784/

相关文章:

c# - 使用 GET 的 ASP.Net MVC 模型绑定(bind)复杂对象

flash - AS3麦克风的电平会随着时间的推移而下降-内置噪声补偿?

python - 使用winsound连续播放声音并通过单击按钮停止

audio - 具有视觉效果的WPF视频播放器

c# - Vector2.Normalize函数,对对角线输出感到困惑

c# - try catch block

c# - 在MVC中通过AJAX进行异常处理的最佳和最简便方法是什么?

c# - Game1.GraphicsDevice 和graphics.GraphicsDevice 之间的区别

c# - java 和 xna(c#) 中继承语法的区别

c# - GeoCoordinate.GetDistanceTo 使用错误的地球半径?