2009-07-21 31 views
12

Tôi đang gặp sự cố khi sử dụng AVAudioPlayer nơi tôi muốn đặt lại trình phát nếu nó hiện đang phát và phát lại.Cài đặt AVAudioPlayer hiện đang phát âm thanh và phát nó từ đầu

tôi thử như sau không có may mắn:

Âm thanh đóng một lần nhưng sau đó lần thứ hai tôi chọn nút nó dừng lại âm thanh, lần thứ ba bắt đầu âm thanh lên một lần nữa.

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

Tôi cũng đã thử sử dụng player.currentTime = 0 cho biết sẽ đặt lại trình phát, không hoạt động, tôi cũng đã thử đặt lại currentTime = 0 và sau đó gọi phát không hoạt động.

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

Trả lời

33

Đối với tình hình của bạn tôi sẽ cố gắng sau

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

player.currentTime = 0; 
[player play]; 

Nếu bạn đang đi để ngay lập tức phát âm thanh một lần nữa, tôi sẽ đề nghị tạm dừng thay vì dừng lại. Dừng gọi "Dừng phát lại và hoàn tác thiết lập cần thiết để phát lại".

+6

FWIW, tôi đã nhìn thấy rằng chỉ cần thiết lập currentTime bằng không là đủ. Với phương pháp được mô tả ở đây, tôi thấy âm thanh từ chối phát sau khi thực hiện một vài lần liên tiếp. – Plumenator

0

Swift dụ:

player.currentTime = 0.0; 
Các vấn đề liên quan