Alan_s Alan_s - 5 months ago 27
iOS Question

How to use AVAudioPlayer to play sound effects?

Whenever I play my

AVAudio
clip, the clip plays, and then it crashes a moment later. I can't figure out why. When it crashes, it doesn't give me anything in the log. Here is my code. I've also imported
AVFoundation/AVFoundation.h
and
AudioToolbox/AudioToolbox.h


-(void)soundEffect {
NSBundle *mainBundle = [NSBundle mainBundle];
NSString *filePath = [mainBundle pathForResource:@"BlastWAV" ofType:@"wav"];
NSData *fileData = [NSData dataWithContentsOfFile:filePath];

NSError *error = nil;

avSound = [[AVAudioPlayer alloc] initWithData:fileData error:&error];
[avSound prepareToPlay];

[avSound play];
}

Answer

Here is the answer:

Since you are using cocos2d you can use the SimpleAudioEngine if you are using v2.x or OALSimpleAudio if you are using v3.x like so:

[[SimpleAudioEngine sharedEngine] preloadEffect:@"sound.caf"];
[[SimpleAudioEngine sharedEngine] playEffect:@"sound.caf"];

and when you are done with it at the end of the scene:

[[SimpleAudioEngine sharedEngine] unloadEffect:@"sound.caf"];

For v3 the equivalent is:

[[OALSimpleAudio sharedInstance] preloadEffect:@"sound.caf"];
[[OALSimpleAudio sharedInstance] playEffect:@"sound.caf" loop:NO];
[[OALSimpleAudio sharedInstance] unloadAllEffects];