C#XNA:停止并播放Cue(声音)对象

时间:2010-02-04 03:36:28

标签: c# audio xna cue

我试图阻止Cue,然后再次播放。此代码位于Update()循环中:

Cue torpedoSound = soundBank.GetCue("torpedo");
torpedoSound.Stop(AudioStopOptions.AsAuthored);
torpedoSound.Play(); // Invalid Operation Exception

但是,我总是在上述位置获得InvalidOperationException。文档说明如果在Play()上调用Cue isPlaying为真,则会发生这种情况。但如果我之前立即致电Stop(),这怎么可能?

这很好用:

soundBank.PlayCue("torpedo");

在此之后立即拨打Stop()可以让声音播放,这让我感到惊讶:

soundBank.PlayCue("torpedo");
torpedoSound.Stop(AudioStopOptions.Immediate);

这不应该让用户听不到它吗?

此外,当声音已播放时,调用Stop()无法停止播放。

我是C#/ XNA的新手。

1 个答案:

答案 0 :(得分:2)

一旦Cue停止,就不能再使用了。你必须从音频引擎获得一个新的Cue实例。

参考此示例: http://msdn.microsoft.com/en-us/library/dd940205.aspx

关于停止,当您拨打停止时,Cue不会立即停止。如果定义了结束转换,它可能需要一两帧,甚至更多。