Domanda

Sto cercando di fermare un Cue, poi giocare di nuovo. Questo codice è nel ciclo di aggiornamento ():

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

Tuttavia, ho sempre arrivare un InvalidOperationException nella posizione sopra. La documentazione dice che si verificherà se Play() viene chiamato su un Cue per il quale isPlaying è vero. Ma se chiamo Stop() immediatamente prima, come può essere?

Questo funziona bene:

soundBank.PlayCue("torpedo");

Esecuzione di una chiamata a Stop() subito dopo che consente al suono di giocare in ogni caso, che mi sorprende:

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

Qualora non questo lo rendono mai essere udibile per l'utente?

Inoltre, quando il suono è già in riproduzione, chiamando Stop() non riesce a fermarlo.

Sono nuovo di C # / XNA.

È stato utile?

Soluzione

Una volta che un Cue viene arrestato non può più essere utilizzato. Dovete ottenere una nuova istanza Cue dal motore audio.

Fare riferimento a questo esempio: http://msdn.microsoft.com/en-us/library/dd940205. aspx

Per quanto riguarda l'arresto, Cue non si ferma immediatamente quando si chiama Stop. Si può prendere una cornice o due, o anche più se c'è una transizione finale definito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top