Domanda

Sto avendo un problema con AVAudioPlayer dove voglio ripristinare un giocatore se è attualmente in riproduzione e lo hanno giocare di nuovo.

provo quanto segue senza fortuna:

L'audio viene riprodotto una volta, ma poi la seconda volta i selezionare il pulsante si ferma il suono, la terza volta che si avvia il suono di nuovo.

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    [player stop];
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}

Inoltre ho provato ad utilizzare player.currentTime = 0 che indica che sarebbe ripristinare il lettore, che non ha funzionato, ho anche provato a ripristinare currentTime = 0 e quindi chiamando il gioco che non ha funzionato.

//Stop the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    player.currentTime = 0;
    [player play];
} else {
    NSLog(@"playSound: %@", selectedSound);
    [player play];      
}
È stato utile?

Soluzione

Per la vostra situazione che avrebbe cercato il seguente

//Pause the player and restart it
if (player.playing) {
    NSLog(@"Reset sound: %@", selectedSound);
    [player pause];
}

player.currentTime = 0;
[player play];

Se avete intenzione di giocare subito il suono di nuovo, vorrei suggerire di pausa, invece di arresto. Chiamando stop "di interrompere la riproduzione e disfa la configurazione necessaria per la riproduzione".

Altri suggerimenti

Esempio Swift:

player.currentTime = 0.0;

Come indicato, se si desidera che il suono a giocare di nuovo, si dovrebbe evitare disabilitando l'istanza AVAudioPlayer con una sosta, ma piuttosto, semplicemente emettere un reset della posizione in cui si sta giocando. Quindi, non utilizzare stop () o pause (), ma come detto Plumenator, basta rilasciare .currentTime = 0. Quindi nel tuo caso, si sarebbe semplicemente fare:

if (player.isPlaying) { 
   player.currentTime = 0
} else {
   player.play()
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top