C#XNA:停止和播放提示(声音)对象

C#XNA:停止和播放提示(声音)对象,c#,audio,xna,cue,C#,Audio,Xna,Cue,我试图停止一个提示,然后再播放一次。此代码位于Update()循环中: 但是,我总是在上面的位置得到一个InvalidOperationException。文档中说,如果在提示下调用Play(),而isplay为true,则会发生这种情况。但是如果我在前面立即调用Stop(),这怎么可能呢 这很好: soundBank.PlayCue("torpedo"); 在这之后立即调用Stop(),仍然可以播放声音,这让我感到惊讶: soundBank.PlayCue("torpedo"); torpe

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

但是,我总是在上面的位置得到一个
InvalidOperationException
。文档中说,如果在
提示下调用
Play()
,而
isplay
为true,则会发生这种情况。但是如果我在前面立即调用
Stop()
,这怎么可能呢

这很好:

soundBank.PlayCue("torpedo");
在这之后立即调用
Stop()
,仍然可以播放声音,这让我感到惊讶:

soundBank.PlayCue("torpedo");
torpedoSound.Stop(AudioStopOptions.Immediate);
这难道不应该让用户永远听不到吗

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


我不熟悉C#/XNA。

一旦停止某个提示,它就不能再使用了。您必须从音频引擎获取一个新的提示实例

请参阅此示例:


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

我不明白,你说你在它已经停止时调用Stop,为什么?然后你说你叫停止是因为它在玩,你想停止吗?你能解释一下声音没有播放,但为了安全起见,我正在呼叫
Stop()
。但不知怎的,它仍然给了我一个例外,就好像它在玩一样。
soundBank.PlayCue("torpedo");
torpedoSound.Stop(AudioStopOptions.Immediate);