C# XNA: остановка и воспроизведение объектов Cue (звук)
Я пытаюсь остановить 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.
1 ответ
Как только Cue остановлен, он больше не может быть использован. Вы должны получить новый экземпляр Cue от аудио движка.
Обратитесь к этому образцу: http://msdn.microsoft.com/en-us/library/dd940205.aspx
Что касается остановки, Cue не сразу останавливается, когда вы вызываете Stop. Это может занять один или два кадра или даже больше, если определен конечный переход.