Sound Delay With AVAudio Player

Posted by Will Youmans on Game Development See other posts from Game Development or by Will Youmans
Published on 2012-05-14T21:03:49Z Indexed on 2012/06/28 21:25 UTC
Read the original article Hit count: 156

Filed under:
|

I'm using the following code in my viewDidLoad to load a sound:

NSURL * url = [NSURL fileURLWithPath:
   [NSString stringWithFormat:@"%@/Moto - Hit Sound.mp3",
   [[NSBundle mainBundle] resourcePath]]];
NSError * error;
hitSoundPlayer = [[AVAudioPlayer alloc]initWithContentsOfURL:url error:&error];
hitSoundPlayer.numberOfLoops = 0;

Then I'm using this in a void method to play the sound:

if(CGRectIntersectsRect(main.frame, enemy1.frame)){
    [hitSoundPlayer play];
}

This does seem to work, however the first time the sound is played there is a lot of lag and the game stops temporarily. I'm using this same method for when in an IBAction and it works fine, it must be the fact that it's also detecting a collision that makes the sound lag. If I want to be able to play sounds quickly and on the spot without any sort of lag am I doing the right thing? Do I want to use another method? I'm not using any frameworks like cocos2d. If you need to see any more code just ask.

© Game Development or respective owner

Related posts about iphone

Related posts about sound