AVAudioPlayer
セットアップして再利用できる を見てください。しかし、もっと重要なことは、セットアップ時に、サウンドをメモリにプリロードする「再生の準備」を指示できることです。つまり、実際にプレーヤーに再生するように指示すると、すぐに再生されます。AVAudioPlayer
便利なことに、最近、オブジェクトを作成して返す何かのためにこのメソッドを書きました。
+(AVAudioPlayer *)playerForFile:(NSString *)ファイル名
{
NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:@"caf"];
NSURL *url = [NSURL fileURLWithPath:filePath];
NSData *soundData = [NSData dataWithContentsOfURL:url];
NSError *エラー = nil;
AVAudioPlayer *player = [[[AVAudioPlayer alloc] initWithData:soundData エラー:&error] autorelease];
もし(エラー)
NSLog(@"%@ のプレイヤー作成エラー: %@", fileName, [エラーのローカライズされた説明]);
return (error ? nil : player);
}
アプリのどこかで、次のようにプレーヤー オブジェクトをセットアップできます。
AVAudioPlayer *buzzSoundPlayer = [MyClass playerForFile:@"buzz"];
if (buzzSoundPlayer) {
[buzzsoundPlayer prepareToPlay];
}
音を鳴らしたいとき:
[buzzSoundPlayer setCurrentTime:0];
[buzzSoundPlayer play];
サウンドの再生が終了すると、「現在の時間」が最後になるため、再生するたびに現在の時間を 0、つまりサウンド ファイルの先頭に設定する必要があります。したがって、それを再生するための後続のリクエストは何も再生しません。そのため、現在の時刻を最初に戻します。
プレーヤーにもをセットアップしdelegate
て、サウンドの再生が終了したときにデリゲート メソッドを介して通知を受け取ることができます。または、現在の時刻を 0 にリセットすることもできます。
AVAudioPlayer
、およびについてAVFoundation
は、Apple のドキュメントですべて読むことができます。