我试图阻止Cue,然后再次播放。此代码位于Update()循环中:
Cue torpedoSound = soundBank.GetCue("torpedo");
torpedoSound.Stop(AudioStopOptions.AsAuthored);
torpedoSound.Play(); // Invalid Operation Exception
但是,我总是在上述位置获得InvalidOperationException
。文档说明如果在Play()
上调用Cue
isPlaying
为真,则会发生这种情况。但如果我之前立即致电Stop()
,这怎么可能?
这很好用:
soundBank.PlayCue("torpedo");
在此之后立即拨打Stop()
可以让声音播放,这让我感到惊讶:
soundBank.PlayCue("torpedo");
torpedoSound.Stop(AudioStopOptions.Immediate);
这不应该让用户听不到它吗?
此外,当声音已播放时,调用Stop()
无法停止播放。
我是C#/ XNA的新手。
答案 0 :(得分:2)
一旦Cue停止,就不能再使用了。你必须从音频引擎获得一个新的Cue实例。
参考此示例: http://msdn.microsoft.com/en-us/library/dd940205.aspx
关于停止,当您拨打停止时,Cue不会立即停止。如果定义了结束转换,它可能需要一两帧,甚至更多。