2009-12-14 2 views
0

У меня две проблемы. Я использую AVAudioPlayer для воспроизведения простого аудиофайла в формате .caf. Я пытаюсь сделать кнопку воспроизведения и паузы. Вот пример простого IBAction для воспроизведения звука с кнопки.Помогите остановить звук с помощью AVAudioPlayer

- (IBAction) clear { 
NSString *path = [[NSBundle mainBundle] pathForResource:@"clear" ofType:@"caf"]; 
AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
myAudio.delegate = self; 
myAudio.volume = 1.0; 
myAudio.numberOfLoops = 0; 
[myAudio play]; 
} 

Так что, когда я иду вперед и создать еще один IBAction с методом ...

- (IBAction) stopaudio { 
[myAudio stop]; 
audioPlayer.currentTime = 0; 
} 

компилировать и Xcode рассказывает мне, что myAudio в stopaudio IBAction не определен. Как исправить это, чтобы я мог получить доступ к myAudio в другом IBAction?

Мой второй вопрос заключается в том, что я использую NavigationController для настройки TableView, когда я делаю выбор, он возвращает меня в UIView с помощью кнопки «Назад», чтобы вернуться к TableView. Я пытаюсь убить любой звук, который я играл в UIView, когда возвращаюсь к TableView. Код выше является частью кода, который я буду иметь в UIView.

Также один быстрый вопрос. Допустим, у меня есть аудиофайл длиной 1 минуту. При повторном нажатии на воспроизведение будет перекрываться новый экземпляр этого аудио до того, как будет воспроизведен старый экземпляр. Как я могу проверить, воспроизводится ли myAudio, и не разрешать ли воспроизведение снова, пока myAudio не закончит воспроизведение?

Спасибо!

+0

вы должны следовать соглашению об именах они используют, так что stopaudio будет stopAudio. – Sneakyness

ответ

3

Прежде всего, вы должны прочитать документацию. Он устранит почти все ваши вопросы. Тем не менее, чтобы получить доступ к вашему экземпляру AVAudioPlayer из всех методов вашего класса, вы должны определить его в своем .h-файле. Чтобы остановить воспроизведение проигрывателя на предыдущем экране, вызовите [myAudio stop] в свой метод viewWillDisappear:(BOOL)animated. О вашем последнем вопросе. Если вы определите myAudio в своем .h файле, вы сможете проверить, воспроизводится ли он сейчас. как чего-л

- (IBAction) clear { 
    if(![myAudio isPlaying]){ 
     [myAudio play]; 
    } 

}

Смежные вопросы