2009-07-21 6 views
12

J'ai un problème avec AVAudioPlayer dans lequel je veux réinitialiser un lecteur s'il est en cours de lecture et le faire jouer à nouveau.AVAudioPlayer réinitialise le son en cours de lecture et le reproduit depuis le début

J'essaie ce qui suit à pas de chance:

Le son joue une fois mais la deuxième fois que je sélectionne le bouton, il arrête le son, la troisième fois commence le son à nouveau.

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

J'ai aussi essayé d'utiliser player.currentTime = 0, ce qui indique que cela réinitialiser le lecteur, qui ne fonctionne pas, j'ai aussi essayé de réinitialiser currentTime = 0 puis appeler le jeu qui ne fonctionne pas.

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

Répondre

33

Pour votre situation je voudrais essayer les suivantes

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

player.currentTime = 0; 
[player play]; 

Si vous allez jouer immédiatement le son à nouveau, je suggère une pause au lieu d'arrêt. Appel stop "Arrête la lecture et annule la configuration nécessaire à la lecture."

+6

FWIW, j'ai vu que la mise à zéro juste currentTime suffit. Avec la méthode décrite ici, je vois l'audio refuser de jouer après l'avoir fait plusieurs fois de suite. – Plumenator

0

exemple Swift:

player.currentTime = 0.0; 
Questions connexes