我试图阻止一个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不会立即停止.如果定义了结束转换,它可能需要一两帧,甚至更多.