Аудио зацикливание в Objective-C / iPhone - PullRequest
1 голос
/ 19 марта 2010

Итак, я заканчиваю приложение для iPhone.

У меня есть следующий код для воспроизведения файла:

while(![player isPlaying]) {
  totalSoundDuration = soundDuration + 0.5; //Gives a half second break between sounds
  sleep(totalSoundDuration); //Don't play next sound until the previous sound has finished
  [player play]; //Play sound
  NSLog(@" \n Sound Finished Playing \n"); //Output to console
}

По какой-то причине звук воспроизводится один раз, затем код повторяется и выводит следующее:

Sound Finished Playing
Sound Finished Playing
Sound Finished Playing
etc...

Это просто повторяется навсегда, я не думаю, что кто-нибудь из вас, милые люди, может понять, что может быть потрясением?

Ура!

1 Ответ

3 голосов
/ 19 марта 2010

Я не совсем уверен, что не так с вашим кодом, может быть, [player player] - это асинхронный вызов, но вы зацикливаетесь вечно, не позволяя игроку фактически начать играть или не осознавая, что он действительно играет. Я не рекомендую использовать sleep в любых приложениях для iPhone, потому что вся модель основана на асинхронных событиях.

Я не тестировал этот код и даже не компилировал его, но я надеюсь, что вы поняли его.

- (void) startPlayingAgain:(NSTimer *)timer
{
    AVAudioPlayer *player = timer.userInfo;

    [player play];
}

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player 
                       successfully:(BOOL)flag
{
  NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.5
                            target:self
                            selector:@selector(startPlayingAgain:)
                            userInfo:player
                            repeats:NO];
}

- (void)startPlaying:(NSString *)url
{
    AVAudioPlayer *player = [[AVAudioPlayer alloc] 
                                initWithContentsOfURL:url error:NULL];

    player.delegate = self;

    [player play];
}

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