2009-07-21 19 views
12

Mam problem z AVAudioPlayer, w którym chcę zresetować odtwarzacz, jeśli jest on aktualnie odtwarzany i odtworzyć go ponownie.Resetowanie AVAudioPlayer odtwarza teraz dźwięk i odtwarza go od początku

staram następujące bez powodzenia:

Dźwięk odgrywa raz, ale wtedy drugi raz wybrać przycisk zatrzymuje dźwięk, po raz trzeci rozpoczyna dźwięk ponownie.

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

Ja również próbowałem przy użyciu player.currentTime = 0, który wskazuje, że resetowanie odtwarzacza, który nie działa, próbowałem również zresetowanie CurrentTime = 0, a następnie wywołanie luz, że nie działa.

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

Odpowiedz

33

do sytuacji chciałbym spróbować pauzy zamiast przystanku po

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

player.currentTime = 0; 
[player play]; 

Jeśli masz zamiar natychmiast ponownie odtworzyć dźwięk, chciałbym zaproponować. Calling stop "Zatrzymuje odtwarzanie i cofa ustawienia potrzebne do odtwarzania."

+6

FWIW, widziałem, że po prostu ustawienie CurrentTime do zera to za mało. Dzięki opisanej tutaj metodzie widzę, że dźwięk nie chce grać po kilkukrotnym wykonaniu w krótkim odstępie czasu. – Plumenator

0

Swift przykład:

player.currentTime = 0.0; 
Powiązane problemy