【发布时间】:2012-12-30 00:38:26
【问题描述】:
我需要一种在声音仍在播放时启动/停止循环的方法。我发现一起播放多个声音的最佳方法是使用 XNA。所以我从包含音频剪辑的SoundEffect 对象开始创建了一个SoundEffectInstance。
现在的问题是我有一个按钮,它应该将此剪辑的状态从“循环”更改为“非循环”,反之亦然。
问题来了:
它抛出一个异常,说必须在第一次播放之前设置循环。
所以我认为,从“非循环”切换到“循环”时,我可以等待声音停止,然后重新创建SoundEngineInstance,设置IsLooped = true 并让它重新开始。
这个可行,但是有一些延迟,这会让你失去时间,所以它很没用。
我正在寻找一种在播放声音时设置或取消设置循环且没有任何延迟的方法。
编辑:
我尝试使用两个SoundEngineInstance,一个循环,一个不循环,然后使用音量在它们之间切换。
问题是非循环的片段在第一次播放后就停止了,所以如果我循环它两次然后我把它设置为非循环状态,因为非循环的剪辑已经结束,所以没有声音播放!
建议?
【问题讨论】:
-
既然你想让声音循环播放,你会说它更像一首歌而不是
SoundEffect吗? -
我有一些短样本,我希望将它们循环播放。我说的是
SoundEffect,因为这是我用于播放的 XNA 类。
标签: c# audio xna visual-studio-2012 windows-phone-8