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. Это может занять один или два кадра или даже больше, если определен конечный переход.

Другие вопросы по тегам