我需要一种在声音仍在播放时启动/停止循环的方法。我发现一起播放多个声音的最佳方法是使用 XNA。因此,我从包含音频剪辑的对象创建了一个SoundEffectInstance
起点。SoundEffect
现在的问题是我有一个按钮,它应该将此剪辑的状态从“循环”更改为“非循环”,反之亦然。
这就是问题所在:它抛出一个异常,说必须在第一次播放之前设置循环。所以我认为,从“非循环”切换到“循环”时,我可以等待声音停止,然后重新创建SoundEngineInstance
, 设置IsLooped = true
并让它重新开始。这一个有效,但是有一些延迟,这会让你失去时间,所以它毫无用处。
我正在寻找的是一种在播放声音时设置或取消设置循环并且没有任何延迟的方法。
编辑:
我尝试使用两个SoundEngineInstance
,一个循环,一个不循环,并简单地使用音量在它们之间切换。问题是非循环的片段在第一次播放后就停止了,所以如果我循环它两次然后我把它放到非循环状态,因为非循环的剪辑已经结束,所以没有声音播放!
建议?