iOSアプリ開発の逆引き辞典

iPhone/iPadで使えるアプリ開発のTipsをまとめてみました

AVaudioPlayerを使ってサウンドファイル(BGMや効果音など)を再生する

BGMや効果音などのサウンドファイルを再生するにはAVAudioPlayerクラスを使用します。

AVAudioPlayerクラスを使用する場合は、importディレクティブに以下の宣言が必要になります。

#import <AVFoundation/AVFoundation.h>

アプリパッケージに含まれるサウンドファイルを再生する

バイナリ内に含まれる楽曲ファイルを再生させる場合のサンプルコードを以下に示します。

// 楽曲ファイルのパスからAudioPlayerオブジェクトを作成
NSString* path = path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"wav"];
NSURL* url = [NSURL fileURLWithPath:path];
AVAudioPlayer *player= [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

// playが呼び出されてからすぐに音を鳴らすことが出来る様に
// あらかじめファイルの読み込みをおこない、バッファに保持しておく
[player prepareToPlay]

// 音声ファイルの再生をおこなう
[player play];

無限に繰り返してサウンドファイルを再生する(BGMなど)

楽曲ファイルをBGM的に使用したい場合は、playメソッドにて再生する前に再生回数をnumberOfLoopsプロパティにて無限ループを意味する-1を指定します。

-1に無限という意味があるのかといえば少し異なり、0より小さいの値を設定すれば楽曲を無限ループで再生されます。

[player setNumberOfLoops:-1];

もしくは

player.numberOfLoops = -1;

回数を指定した分だけ繰り返しサウンドファイルを再生する(効果音など)

0より小さい値を指定した場合は楽曲を無限に再生させることができました。0以上の数値を指定した場合はどうなるでしょうか。

あと何回楽曲を再生するのかという意味となります。例えば、setNumberOfLoops:NSIntegerメソッド2を指定した場合は、playメソッドにて再生される1回+ループする回数2回、つまり3回同じ楽曲が再生されます。

// 3回再生させたい場合
[player setNumberOfLoops:2];