我正在用C#/XNA构建一个游戏,它是一个顶级的赛车游戏,当我的车撞到墙上时,我想玩一个音效。
问题是我的声音一直在循环,所以当我撞到墙上时,这首歌会立即开始播放,但我想要它播放,当它播放完后,它可以再次播放。
下面是处理冲突的代码:
if (map[x][y] == 0) { car.speed = 0;
crash.Play(); }如果我有什么不明白的,请问我。
提前感谢!
发布于 2012-11-17 01:37:57
以下是您问题的完整答案:http://msdn.microsoft.com/en-us/library/dd940203.aspx
SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;但是,默认情况下,SoundEffect不应该循环...
发布于 2012-11-17 00:34:36
调用SoundEffect.CreateInstance()获取SoundEffectInstance。然后在调用Play之前将IsLooped属性设置为false
crashSoundEffectInstance.IsLooped = false;发布于 2012-11-17 00:11:52
您可能希望研究一下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();
}https://stackoverflow.com/questions/13420193
复制相似问题