停止SoundEffect循环

时间:2012-11-16 16:06:51

标签: c# visual-studio xna

我正在用C#/ XNA制作一款游戏,这是一款顶级赛车游戏,当我的车碰到一堵墙时,我想发挥声音效果。

问题是我的声音一直在循环,所以当我撞墙时,歌曲会立即开始播放,但是我希望它能够播放,当它完成播放时,它可以再次播放。

以下是处理冲突的代码:

if (map[x][y] == 0) {                car.speed = 0;

crash.Play(); }

如果我不清楚某事,请问我。

提前致谢!

3 个答案:

答案 0 :(得分:4)

以下是您问题的完整答案:http://msdn.microsoft.com/en-us/library/dd940203.aspx

SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;

但是,默认情况下,SoundEffect不应该循环...

答案 1 :(得分:2)

致电SoundEffect.CreateInstance()获取SoundEffectInstance。然后在致电IsLooped之前将Play属性设置为false:

crashSoundEffectInstance.IsLooped = false;

答案 2 :(得分:1)

您可能需要查看SoundEffectInstance课程。这是关于如何正确使用它的example

您可以检查声音效果状态是否正在播放

编辑:我添加了更完整的代码,因为我觉得有必要。它与我提供的链接大致相同。 (注意:此代码未经测试)

//In your content load
SoundEffect crash;
crash = Content.Load<SoundEffect>("PathToYourSoundEffect");
SoundEffectInstance sei = crash.CreateInstance();

//In your update code
if(sei.State == SoundState.Stopped || sei.State == SoundState.Paused)
{
    sei.Play();
}