Domanda

Ho usato l'AVAudioPlayer per riprodurre un file wav 10 secondi e funziona benissimo. Ora ho quello di fermare il wav al 4 ° sec e poi giocare di nuovo dal molto prima sec.

Ecco il codice che ho provato:

NSString *ahhhPath = [[NSBundle mainBundle] pathForResource:@"Ahhh" ofType:@"wav"];
AVAudioPlayer *ahhhhhSound =[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:ahhhPath] error:NULL];

[ahhhhhSound stop];
[ahhhhhSound play];

Quello che ottengo è, il wav si ferma al 4 ° sec, ma quando ho eseguito il [gioco XXX] ancora una volta, il wav continua a giocare il 5 ° sec invece di giocare dall'inizio.

Come potrei ottenere questo fatto? Qualsiasi aiuto sarà apprezzato.

È stato utile?

Soluzione

AVAudioPlayer di riferimento di classe di Apple dice:

Il metodo di arresto non azzerare il valore della proprietà currentTime a 0. In altre parole, se si chiama fermata durante la riproduzione e il gioco poi chiamata, la riproduzione riprende dal punto in cui era stato interrotto.

Quindi, si dovrebbe essere in grado di riavviare con:

[ahhhhhSound stop];
ahhhhhSound.currentTime = 0;
[ahhhhhSound play];

Altri suggerimenti

Così ho avuto qualche problema, come si può vedere dal mio commento sulla risposta di DarkDust. Il problema è apparso solo su iOS 4.3.3 / 4.3.5, iPhone 4. iOS versioni forse anche prima, come pure, ma non iOS 5.0.1. In qualche modo l'AVAudioPlayer stesso sembrava di "rompere" quando l'arresto e il secondo gioco sarebbe solo riuscire unexplicably. In realtà un "stop" sarebbe scaricare alcune cose caricato su prepareToPlay, che non viene scaricato solo se si "pausa", il giocatore - secondo il riferimento. Quindi la mia soluzione sarebbe utilizzando pausa invece di stop - considerato il giocatore è attualmente in riproduzione - altrimenti non ci sarebbe alcun motivo di arresto nulla. Teoricamente dovrebbe essere più veloce anche. Risolto il problema per me.

if (ahhhhhSound.playing) {
    [ahhhhhSound pause];
}
ahhhhhSound.currentTime = 0;
[ahhhhhSound play];

Ora posso andare avanti con la vita.

Swift:

mySound.audioPlayer?.stop()
mySound.audioPlayer?.currentTime = 0
mySound.audioPlayer?.play()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top