2011年11月09日

AVFoundationで効果音

Java人によるObjective-C挑戦

正解・不正解で音がでないの??との事でしたので
今日はAVFoundationで効果音をつけてみます。

効果音は以下サイトのものを使用しています。ありがとうございます。
TAM Music Factory


まずはAVFoundationを使う為の環境設定です。
x-codeにて追加します。
AVFoundation001.jpg
AVFoundation002.jpg

そして効果音をfinderからx-codeにドラッグアンドドロップします。
AVFoundation003.jpg



次にコーディングです。
ヘッダにてインポートと使うメンバ変数やメソッドの宣言を行います。
SeisekiListViewController.h

#import <AVFoundation/AVFoundation.h>
・・・ 省略 ・・・ 
@interface SeisekiListViewController : UIViewController {
・・・ 省略 ・・・ 
AVAudioPlayer *_okSoundPlayer;
AVAudioPlayer *_ngSoundPlayer;
AVAudioPlayer *_score100SoundPlayer;
AVAudioPlayer *_scoreNGSoundPlayer;

}
- (AVAudioPlayer*)getAVAudioPlayer:(NSString*)soudFileName;




以下点に気をつけながら実装してみました。
・pathForResourceにて拡張子付きファイル名を渡した時は ofTypeはnilを指定する
・playメソッドで発声が遅れない様にprepareToPlayしてあらかじめ読み込んでおく

SeisekiListViewController.m

#import "MainViewController.h"

@implementation MainViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
・・・ 省略 ・・・
_okSoundPlayer = [self getAVAudioPlayer:@"quiz1.wav" ];
[_okSoundPlayer prepareToPlay];
_ngSoundPlayer = [self getAVAudioPlayer:@"quiz2.wav" ];
[_ngSoundPlayer prepareToPlay];
_score100SoundPlayer = [self getAVAudioPlayer:@"score100.mp3" ];
[_score100SoundPlayer prepareToPlay];
_scoreNGSoundPlayer = [self getAVAudioPlayer:@"scoreNG.mp3" ];
[_scoreNGSoundPlayer prepareToPlay];

}
return self;
}

- (id)getAVAudioPlayer:(NSString*)soudFileName;
{
AVAudioPlayer *player=nil;
NSString *path = [[NSBundle mainBundle] pathForResource:soudFileName ofType:nil];
NSURL *url = [NSURL fileURLWithPath:path];
if(url){
NSError *err = nil;
player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&err];
}

return player;

}


- (IBAction)ansButtonDidPush:(id)sender
{
・・・ 省略 ・・・
if ( _anserNum == correctNum ){ // 正解の処理
[_okSoundPlayer play];

}else{ // 不正解の表示
[_ngSoundPlayer play];

}
・・・ 省略 ・・・

}



↓実行結果。★音が出ます。音量注意★↓




次は起動画面やアイコン等を作ってみたいと思います。


Java人によるObjective-C挑戦
posted by itokami1123 at 00:14| Comment(1) | 日記
この記事へのコメント
音を鳴らす方法がわからずいくつも調べていたのですがここが一番わかりやすくてようやできました、ありがとうございました
Posted by at 2012年02月06日 22:40
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: