0

我喜欢显示和图像并播放相应的音频文件。但它在显示之前先播放音频文件。我想不出有什么问题。

-(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];
}
4

1 回答 1

0

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

于 2013-07-15T20:22:20.570 回答