Я пытаюсь остановить 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() не может его остановить.
Я новичок в С#/XNA.
Stop()на всякий случай. Тем не менее, каким-то образом он все еще дает мне исключение, как если бы он играл. - person Nick Heiner   schedule 04.02.2010