Я пытаюсь остановить Cue, а затем воспроизвести его снова. Этот код находится в Update() петли: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.
Я не понимаю, вы говорите, что вы называете Стоп, когда он уже остановлен, почему? Тогда вы говорите, что вызываете стоп, потому что он играет, и вы хотите остановить его? Может, пожалуйста, объясните – Amirshk
Звук еще не воспроизводится, но я вызываю 'Stop()', чтобы быть в безопасности. Но почему-то это все еще дает мне исключение, как если бы оно играло. –