首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >停止SoundEffect循环

停止SoundEffect循环
EN

Stack Overflow用户
提问于 2012-11-17 00:06:51
回答 3查看 972关注 0票数 1

我正在用C#/XNA构建一个游戏,它是一个顶级的赛车游戏,当我的车撞到墙上时,我想玩一个音效。

问题是我的声音一直在循环,所以当我撞到墙上时,这首歌会立即开始播放,但我想要它播放,当它播放完后,它可以再次播放。

下面是处理冲突的代码:

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

代码语言:javascript
复制
crash.Play(); }

如果我有什么不明白的,请问我。

提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2012-11-17 01:37:57

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

代码语言:javascript
复制
SoundEffectInstance instance = soundEffect.CreateInstance();
instance.IsLooped = true;

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

票数 4
EN

Stack Overflow用户

发布于 2012-11-17 00:34:36

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

代码语言:javascript
复制
crashSoundEffectInstance.IsLooped = false;
票数 2
EN

Stack Overflow用户

发布于 2012-11-17 00:11:52

您可能希望研究一下SoundEffectInstance类。这里有一个关于如何正确使用它的example

您可以检查音效状态,以查看当前是否正在播放

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

代码语言:javascript
复制
//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();
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13420193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档