サウンド BGM (AVFoundationでcafファイルを鳴らす)
※AVFoundationで効果音は無理。立ち上がりが遅くてゲームにならない。BGM向け。効果音はAudioToolboxを使うべし
0.まず、AVFoundation.frameworkを追加しておく
1. AppDelegate.h
#import <AVFoundation/AVFoundation.h>
2. AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch
// Initialize AVFoundation
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
[audioSession setCategory:AVAudioSessionCategoryAmbient error:nil];
NSError *error= nil;
[audioSession setActive:YES error:&error];
}
3.XXXXView.h
#import <AVFoundation/AVFoundation.h>
@interface XXXXView : UIView {
AVAudioPlayer *bgm01;
AVAudioPlayer *bgm02;
AVAudioPlayer *bgm03;
}
4.XXXXView.m
-(id)initWithCoder:(NSCoder*)coder {
// Load sound files ポインタいちいち個別設定が面倒なので、あえて{}使って同じポインタ名使い回ししてます
{ // bgm01.caf
NSURL *fileURL=[[NSBundle mainBundle] URLForResource:@"bgm01" withExtension:@"caf"];
NSError *error=nil;
bgm01=[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if(!bgm01) NSLog(@"Failed to load bgm01.caf: %@", error);
bgm01.volume=0.1;
bgm01.numberOfLoops=-1; // loop
}
{ // bgm02.caf
NSURL *fileURL=[[NSBundle mainBundle] URLForResource:@"bgm02" withExtension:@"caf"];
NSError *error=nil;
bgm02=[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if(!bgm02) NSLog(@"Failed to load bgm02.caf: %@", error);
bgm02.volume=0.2;
}
{ // bgm03.caf
NSURL *fileURL=[[NSBundle mainBundle] URLForResource:@"bgm03" withExtension:@"caf"];
NSError *error=nil;
bgm03=[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:&error];
if(!bgm03) NSLog(@"Failed to load bgm03.caf: %@", error);
bgm03.volume=0.3;
}
}
5.XXXXView.mで、鳴らしたい場所で
[bgm01 play];
// STOP
[bgm01 pause];
bgm01.currentTime=0.0;