首页 文章

在声音仍在播放时,在 Windows Phone 8 上使用 XNA 进行音频循环

提问于
浏览
11

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

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

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

编辑:

我尝试使用两个SoundEngineInstance,一个循环和一个循环,只需使用卷在它们之间切换。问题是非循环播放只是在第一次播放后停止,所以如果我将它循环两次然后我将其置于非循环状态,则不会播放声音,因为非循环剪辑已经结束!

建议?

2 回答

  • 2

    我有相同的问题,我使用两个具有相同音频剪辑的实例来解决它,一个带有循环,另一个带有循环。我换了两个。这可能不是最好的解决方案,但它对我有用。

  • 0

    来自http://msdn.microsoft.com/en-us/library/dd940203(v=xnagamestudio.31).aspx

    • 使用如何:播放声音中显示的方法声明 SoundEffect。

    • 声明一个 SoundEffectInstance,并将其设置为 SoundEffect.CreateInstance 的返回值。

    • 将 SoundEffectInstance.IsLooped 设置为 true。

    • 调用 SoundEffectInstance.Play 播放循环声音。

    当你不再希望它循环时,你可以将 IsLooped 设置为 false,但只能播放到最后。

相关问题