Аудио не останавливается? - PullRequest
       2

Аудио не останавливается?

0 голосов
/ 12 сентября 2011

Мое небольшое приложение воспроизводит музыку, когда пользователь нажимает кнопку воспроизведения, но я хочу, чтобы музыка остановилась, когда пользователь нажимает кнопку «Далее». Я пробовал разные методы, но у меня проблема; кто-нибудь может помочь, пожалуйста? Пожалуйста, найдите прикрепленный код. Спасибо.

- (IBAction)info {

    // This part takes us to the info page
    InfoPage *rab = [[InfoPage alloc] initWithNibName:@"InfoPage" bundle:nil];
    [UIView beginAnimations:@"flipView" context:Nil];
    [UIView setAnimationDuration:2];
    [UIView setAnimationCurve:UIViewAnimationOptionCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
    [self.view addSubview:rab.view];
    [UIView commitAnimations];

    // This part plays the next page turn noise
    NSURL *this = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/next.wav", [[NSBundle mainBundle] resourcePath]]];
    NSError *error;
    pagePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:this error:&error];
    [pagePlayer setDelegate:self];
    pagePlayer.numberOfLoops = 0;
    [pagePlayer play];

    //This will stop the music when turning page
    //[audioPlayer release];
    clicked = 0;
    [start setImage:[UIImage imageNamed:@"Pplay.png"] forState:UIControlStateNormal];

}

- (IBAction)next {

    // This part takes us to the next view
    Rabbana2 *rab = [[Rabbana2 alloc] initWithNibName:@"Rabbana2" bundle:nil];
    [UIView beginAnimations:@"flipView" context:Nil];
    [UIView setAnimationDuration:2];
    [UIView setAnimationCurve:UIViewAnimationOptionCurveEaseInOut];
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
    [self.view addSubview:rab.view];
    [UIView commitAnimations];

    // This part plays the next page turn noise
    NSURL *this = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/next.wav", [[NSBundle mainBundle] resourcePath]]];
    NSError *error;
    pagePlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:this error:&error];
    [pagePlayer setDelegate:self];
    pagePlayer.numberOfLoops = 0;
    [pagePlayer play];

    //This will stop the music when turning page
    //[audioPlayer release];
    clicked = 0;
    [start setImage:[UIImage imageNamed:@"Pplay.png"] forState:UIControlStateNormal]; 

}

// This button plays the audio
- (IBAction)play {

    if(clicked == 0){
        clicked = 1;
        NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/rabbana1.wav", [[NSBundle mainBundle] resourcePath]]];

        NSError *error;
        audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
        [audioPlayer setDelegate:self];
        audioPlayer.numberOfLoops = 0;


        [audioPlayer play];
        [start setImage:[UIImage imageNamed:@"Sstop.png"] forState:UIControlStateNormal];

    } 
    else{
        [audioPlayer release];
        clicked = 0;
        [start setImage:[UIImage imageNamed:@"Pplay.png"] forState:UIControlStateNormal];
    } 

}

//If user does not do anything by the end of the sound set the button to start
- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) player
                        successfully: (BOOL) flag {
    if (flag==YES) {
        clicked = 0;
        [start setImage:[UIImage imageNamed:@"Pplay.png"] forState:UIControlStateNormal];
    }
}

// If user click on the next button while audio playing, Audio should stop
- (void) audioPlayerDidNotFinishPlaying: (AVAudioPlayer *) player
                                success: (BOOL) flag {
    if (flag==YES) {
        //[audioPlayer stop];
        clicked = 0;
        [start setImage:[UIImage imageNamed:@"Pplay.png"] forState:UIControlStateNormal];
    }
}

Ответы [ 2 ]

0 голосов
/ 12 сентября 2011

Если я читаю это право, вы хотите остановить audioPlayer, когда пользователь нажимает следующий, но он продолжает играть.Я заметил, что у вас нет [релиза AudioPlayer] или [остановки AudioPlayer] в (IBAction) рядом.Попробуйте и посмотрите, остановит ли он проигрывателя при выборе следующего.

0 голосов
/ 12 сентября 2011

Вам нужно остановить AVAudioPlayer, используя метод -stop.Для получения дополнительной информации см. Ссылка класса AVAudioPlayer .Вы можете использовать это в действии кнопки -play следующим образом:

- (IBAction)play {
    if(clicked == 0){
    ...
    } else {
        [audioPlayer stop];
        [audioPlayer release];
        ...
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...