Pregunta

Estoy intentando detener un Cue, y luego jugar de nuevo. Este código se encuentra en el bucle de actualización ():

Cue torpedoSound = soundBank.GetCue("torpedo");
torpedoSound.Stop(AudioStopOptions.AsAuthored);
torpedoSound.Play(); // Invalid Operation Exception

Sin embargo, siempre me dan una InvalidOperationException en la ubicación anterior. La documentación dice que ocurrirá si Play() se llama en un Cue para los que isPlaying es cierto. Pero si llamo Stop() inmediatamente antes, ¿cómo puede ser esto?

Esta bien funciona:

soundBank.PlayCue("torpedo");

La colocación de una llamada a Stop() inmediatamente después de que permite que el sonido se reproduzca todos modos, lo que me sorprende:

soundBank.PlayCue("torpedo");
torpedoSound.Stop(AudioStopOptions.Immediate);

¿No debería hacer esto nunca sea audible para el usuario?

Además, cuando el sonido ya se está reproduciendo, la llamada falla Stop() para detenerlo.

Soy nuevo en C # / XNA.

¿Fue útil?

Solución

Una vez que se detuvo a un Cue ya no puede ser utilizado. Usted tiene que conseguir una nueva instancia Cue desde el motor de audio.

Consulte este ejemplo: http://msdn.microsoft.com/en-us/library/dd940205. aspx

En cuanto a la interrupción, el Cue no se detiene inmediatamente cuando se llama a la parada. Se puede tomar un cuadro o dos, o incluso más si hay un transitorio que finalizará definido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top