C # XNA: остановка и воспроизведение объектов CUE (звуки)

StackOverflow https://stackoverflow.com/questions/2197163

  •  25-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь остановить кию, а затем снова играть в это. Этот код находится в контуре обновления ():

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.

Это было полезно?

Решение

После того, как CUE останавливается, он больше не может быть использован. Вы должны получить новый экземпляр CUE из аудио двигателя.

Обратитесь к этому образцу:http://msdn.microsoft.com/en-us/library/dd940205.aspx.

Что касается остановки, цыпоните не сразу, когда вы называете остановку. Это может принять кадр или два или даже больше, если определено окончательное переход.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top