【问题标题】:C# XNA: stopping and playing Cue (sound) objectsC# XNA:停止和播放 Cue(声音)对象
【发布时间】: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()。然而不知何故,它仍然给我一个例外,就好像它正在播放一样。

标签: c# audio xna


【解决方案1】:

Cue 停止后将无法再使用。您必须从音频引擎中获取一个新的 Cue 实例。

请参阅此示例: http://msdn.microsoft.com/en-us/library/dd940205.aspx

关于停止,当您调用 Stop 时,Cue 不会立即停止。如果定义了结束过渡,它可能需要一两帧,甚至更多。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多