【发布时间】:2010-02-04 03:36:28
【问题描述】:
我正在尝试停止 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 的新手。
【问题讨论】:
-
我不明白,你说你在停止的时候调用Stop,为什么?然后你说你叫停止,因为它正在播放,你想停止它?你能解释一下吗
-
声音还没有播放,但为了安全起见,我打电话给
Stop()。然而不知何故,它仍然给我一个例外,就好像它正在播放一样。