アプリで効果音を連続して鳴らす場合

iPhoneアプリで効果音を鳴らす場合、基本の作りは

NSString *path = [[NSBundle mainBundle] pathForResource:@”hogehoge.aif” ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
[player play];

ですが、この方法で連続して効果音を鳴らすと・・・エラーが発生して、鳴らなくなる場合があります。

(ファイルオープンエラーのようなもの?)

この回避策としては、データをNSDataに保存して使い回すという方法があります。

NSString *hogehoge = [[NSBundle mainBundle] pathForResource:@”hogehoge.aif” ofType:nil];
NSData *buffer = [NSData dataWithContentsOfMappedFile:hogehoge];
AVAudioPlayer *player = [[AVAudioPlayer alloc] initWithData:buffer error:nil];
[player play];

上の方法で、bufferは、viewで保存しておいて使い回したら、、動きました。

Leave a Comment