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

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

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

但是,我总是在上面的位置得到一个InvalidOperationException.文档说如果在isPlaying为真的Cue上调用Play(),则会发生这种情况.但是,如果我之前立即调用Stop(),这怎么可能呢?

这很好用:

soundBank.PlayCue("torpedo");

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

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

这不应该让用户听不到声音吗?

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

我是C#/ XNA的新手.

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

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

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

点赞