首页 文章

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

提问于
浏览
4

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

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

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

这很好用:

soundBank.PlayCue("torpedo");

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

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

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

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

我是 C#/XNA 的新手。

1 回答

  • 2

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

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

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

相关问题