我需要一种在声音仍在播放时开始/停止循环的方法。我发现同时播放多种声音的最佳方式是使用 XNA。因此,我从包含音频剪辑的 SoundEffect
对象开始创建了一个 SoundEffectInstance
。
现在的问题是我有一个按钮可以将此剪辑的状态从“循环”更改为“非循环”,反之亦然。
问题来了:
它抛出一个异常,说明必须在第一次播放之前设置循环。
所以我想,当从“非循环”切换到“循环”时,我可以等待声音停止,然后重新创建 SoundEngineInstance
,设置 IsLooped = true
并让它重新开始。
这个可以用,但是有一些延迟,这会让你失去时间,所以它没什么用。
我正在寻找一种在播放声音时设置或取消设置循环且没有任何延迟的方法。
编辑:
我尝试使用两个 SoundEngineInstance
,一个循环,一个不循环,然后使用音量在它们之间简单地切换。
问题是非循环片段在第一次播放后就停止了,所以如果我循环两次然后将其置于非循环状态,则不会播放任何声音,因为非循环片段已经结束!
建议?
最佳答案
我有同样的问题,我使用了两个具有相同音频片段的实例来解决它,一个有循环,一个没有。我在两者之间切换。这可能不是最好的解决方案,但对我有用。
关于c# - 当声音仍在播放时,Windows Phone 8 上的 XNA 会循环播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14345784/