スポンサーリンク

【Obj-C】リソースファイルから AVAudioPlayer を利用した音の再生方法

iPhone開発 リソースファイルから AVAudioPlayer を利用した音の再生方法 ios 逆引き サンプル

ゲームなどで効果音を再生したい場合、プロジェクト内に音声ファイルを置いて音を再生させる方法です。
一番シンプルで簡単な方法だと思います。

事前準備として、再生したい音声ファイルをプロジェクトへドロップアンドドロップしておきます。
今回は、仮に「test.mp3」をプロジェクトへ追加しました。

まずは、フレームワークを追加しておきます。
AudioToolbox.framework

// 再生したいソース内にて下記をインポートします。
import <AudioToolbox/AudioToolbox.h>

// ファイルのパスを作成します。
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"mp3"];

// ファイルのパスを NSURL へ変換します。
NSURL* url = [NSURL fileURLWithPath:path];

// ファイルを読み込んで、プレイヤーを作成します。
AVAudioPlayer* player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];

// 再生
[player play];

// 停止
[player stop];

と簡単に再生ができます。

また、鳴らすたびに、AVAudioPlayer のインスタンスを作成するとオーバーヘッドが発生しますので、
本格的に利用する場合、

例えば、ボタンタップにて play を実行する場合は、
View が表示される前にファイルを読み込んでおきます。

@property (nonatomic, strong) AVAudioPlayer* player;
を宣言して、viewDidLoad にてインスタンスを作成しておきます。

また、特にボタンの場合、連射される可能性が高いので、
このままですと、2回目が再生されない場合があります。

そのように、連射が想定される場合は、下記のように再生位置を0に戻して再生させると連続して音を再生させることができます。
player.currentTime = 0;

他、上記を利用して、10後のいちから再生させることもできます。
player.currentTime = 10.0f;

下記、他の利用方法としては、
自動で 5 回再生させる場合。
player.numberOfLoops = 5;
自動で 無限に嗄声させる場合。
player..numberOfLoops = -1;

 

タイトルとURLをコピーしました