Как воспроизвести более двух песен с помощью AVAudioPlayer - PullRequest
0 голосов
/ 20 марта 2012

Я хочу сыграть более двух песен в моем приложении.Как я могу сделать это с помощью AVAudioPlayer?

1 Ответ

1 голос
/ 20 марта 2012

Я собирался напечатать ответ, но гугл дает очень хороший ответ:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/27285-play-sequence-audio-files-avaudioplayer.html

Первый фрагмент кода на странице просто вызовет все звуки вsequence:

- (void)playSoundSequence { 

    // Make array containing audio file names 
    NSArray  *theSoundArray = [NSArray arrayWithObjects:@"one",@"two",nil];

    int totalSoundsInQueue = [theSoundArray count];

    for (int i=0; i < totalSoundsInQueue; i) {

        NSString *sound = [theSoundArray objectAtIndex:i];

                // Wait until the audio player is not playing anything
        while(![audioPlayer isPlaying]){

            AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] 
                                                pathForResource:sound ofType:@"wav"]] error:NULL];
            self.audioPlayer = player;
            [player release];
            [audioPlayer setVolume:1.0f];
            [audioPlayer play];
            //Increment for loop counter & move onto next iteration
                        i++;      
        }
    }

}

Но вам, вероятно, лучше использовать AVAudioPlayerDelegate:

Если вы не хотите ждать в цикле, вы также можете сделать свой контроллерAVAudioPlayerDelegate и реализовать

Код:

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag

Это будет вызвано, когда будет достигнут конец аудиофайла, после чего вы начнете воспроизводить следующее аудиофайл.audioPlayerDidFinishPlaying будет вызываться снова, когда тот завершит воспроизведение, и вы начнете следующий после этого и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...