如何在iOS中完成循环后停止音频

时间:2013-11-26 13:26:22

标签: ios iphone objective-c

我是iPhone编程的新手。使用下面的代码,我正在显示带有音频的图像。我已经存储在数组中的图像和音频。在audioPlayerDidFinishPlaying方法完成音频后,我正在使用此代码,我正在显示带有音频的下一个图像。
一切都很好。但问题是在音频和图像完成之后,它再次来自开始。可能是下面代码中的一些问题可以任何人纠正它plz ..

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
  for (NSString* path in array000)
    {
        [blaukypath2 addObject:[UIImage imageWithContentsOfFile:path]];
        NSLog(@"%@",path);
    }
    currentImage++;
    NSError *error;
    if (currentImage >= blaukypath2.count) currentImage = 0;
    UIImage *blaukyyimag = [blaukypath2 objectAtIndex:currentImage];
    [img10 setImage:blaukyyimag];
    NSLog(@"%icurrentImage++ DIDF",currentImage);
    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[audiopath2 objectAtIndex:currentImage] error:&error] ;
    audioPlayer.delegate = self;
    [audioPlayer prepareToPlay];
    [audioPlayer play];
}

3 个答案:

答案 0 :(得分:1)

如果您不想重复图像和音频,请在代码中删除此行..

if (currentImage >= blaukypath2.count) currentImage = 0;

因为这一行会使你的currentImage为0.所以循环将重新开始。

<强>更新
这样做

- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
  for (NSString* path in array000)
    {
        [blaukypath2 addObject:[UIImage imageWithContentsOfFile:path]];
        NSLog(@"%@",path);
    }
    if (currentImage < blaukypath2.count)
    {
       currentImage++;
       NSError *error;
       UIImage *blaukyyimag = [blaukypath2 objectAtIndex:currentImage];
       [img10 setImage:blaukyyimag];
       NSLog(@"%icurrentImage++ DIDF",currentImage);
       audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[audiopath2 objectAtIndex:currentImage] error:&error] ;
       audioPlayer.delegate = self;
       [audioPlayer prepareToPlay];
       [audioPlayer play];
    }
}

答案 1 :(得分:0)

在播放下一个音频之前,请停止前一个音频。

[audioPlayer stop];

希望它适合你。

答案 2 :(得分:0)

创建一个实例变量int arrayIndex;初始化为= 0

 - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    if([array000 count] > arrayIndex) {

      NSString* path = [arrayIndex objectAtIndex:arrayIndex];

      [blaukypath2 addObject:[UIImage imageWithContentsOfFile:path]];
      NSLog(@"%@",path);

      currentImage++;
     NSError *error;
     if (currentImage >= blaukypath2.count) currentImage = 0;
     UIImage *blaukyyimag = [blaukypath2 objectAtIndex:currentImage];
     [img10 setImage:blaukyyimag];
     NSLog(@"%icurrentImage++ DIDF",currentImage);
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[audiopath2      objectAtIndex:currentImage] error:&error] ;
     audioPlayer.delegate = self;
     [audioPlayer prepareToPlay];
     [audioPlayer play];

   }

    arrayIndex++;
} else {
 [audioPlayer stop];
}

尝试这种方法,让我知道它是否有效