C # XNA: остановка и воспроизведение объектов CUE (звуки)
Вопрос
Я пытаюсь остановить кию, а затем снова играть в это. Этот код находится в контуре обновления ():
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.
Что касается остановки, цыпоните не сразу, когда вы называете остановку. Это может принять кадр или два или даже больше, если определено окончательное переход.