我试图阻止一个 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 回答
一旦 Cue 停止,它就不能再使用了。你必须从音频引擎获得一个新的 Cue 实例。
请参阅此示例:http://msdn.microsoft.com/en-us/library/dd940205.aspx
关于停止,当您呼叫停止时,Cue 不会立即停止。如果定义了结束转换,它可能需要一两帧,甚至更多。