остановка AVAudioPlayer - PullRequest
       9

остановка AVAudioPlayer

1 голос
/ 01 апреля 2011

вот мой код

 NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"95" ofType:@"wav"];

NSError *activationError = nil;
NSError *audioPlayerInitError = nil;
[[AVAudioSession sharedInstance] setActive: YES error:&activationError];

NSURL *newURL = [NSURL fileURLWithPath:soundFilePath];
musicPlayer1 = [[AVAudioPlayer alloc] initWithContentsOfURL:newURL error:&audioPlayerInitError];

if (musicPlayer1) {
    [musicPlayer1 stop];
    [musicPlayer1 release];
    musicPlayer1 = nil;
}
else {

    [musicPlayer1 prepareToPlay];
    [musicPlayer1 setVolume:.8];
    [musicPlayer1 setNumberOfLoops:-1]; // -1 means play indefintely
    [musicPlayer1 setDelegate: self];
    [musicPlayer1 play];
}

}

Я пытаюсь запустить и остановить AVAudioPlay той же кнопкой (musicPlayer1 находится в заголовке).Теперь, когда я касаюсь кнопки, она ничего не играет.Помогите пожалуйста?

1 Ответ

3 голосов
/ 01 апреля 2011

Вы создаете новый экземпляр AVAudioPlayer каждый раз.Вы должны удерживать ссылку на объект где-нибудь и возвращаться к этому.Добавьте поле в свой класс контроллера представления:

@private AVAudioPlayer *currentAudio;

И затем в этом методе внесите следующие изменения:

if (currentAudio) {
    [currentAudio stop];
    [currentAudio release];
    currentAudio = nil;
} else {
    // what you already have goes here
}
...