くまちゃんのiOS/Androidゲームプログラミング

マイペースでゲームつくってます。

サウンド 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;