显示图像并播放相应的音频

时间:2013-07-15 19:56:31

标签: objective-c

我喜欢显示和图像并播放相应的音频文件。但它在显示之前首先播放音频文件。我无法弄清楚是什么问题。

-(IBAction)playButton :(id)sender{
    UIImage *imageA = [UIImage imageNamed:@"Image1.png"];
    UIImage *imageB = [UIImage imageNamed:@"Image2.png"];

        int randomAlphaNum = arc4random() % 2; 
        NSLog(@"%i", randomAlphaNum);
        switch (randomAlphaNum) {
            case 0:
                 imageView.image = imageA;
                for (int i = 1; i <=5; i++) {
                    NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audioA.wav", [[NSBundle mainBundle] resourcePath]]];

                    NSError *error;
                    audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
                    audioPlayer.volume = 0.5;

                    if (audioPlayer == nil)
                        NSLog(@"An audio error occured: \"%@\"", audioPlayer);              
                    else 
                    {
                        [audioPlayer play];
                    }
                    sleep(2);
                }
                return;
                break;
}
- (void)viewDidLoad
{
    [super viewDidLoad];
}
- (void)viewDidUnload
{
    [super viewDidUnload];
}

1 个答案:

答案 0 :(得分:0)

首先,我不建议使用sleep因为它会破坏你的主线程并使你的UI无响应。我真的很好奇,如果删除它可以缓解你的问题。在应用程序可以在屏幕上显示图像之前,应用程序可能会通过您的代码,播放音频并点击sleep命令。如果您删除sleep并且只遍历for循环一次,会发生什么?