0

重複の可能性:
xcode 4.2 サウンドボード?

こんにちは、iPhoneアプリ用のサウンドボードを作成していますが、コードにエラーなどが発生し続けています.Xcode 4.2を使用していますが、新しいので、明確にしてください.お時間をいただきありがとうございます。

.h すべて問題ありません。エラーはないと思います

#import <UIKit/UIKit.h>
#import <AudioToolbox/AudioToolbox.h>


@interface ViewController : UIViewController {

}

-(IBAction)sound1:(id)sender;


@end

.m これはエラーのあるものです

#import "ViewController.h"

//@interface ViewController ()


@implementation ViewController


-(IBAction)sound1:(id)sender {
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef soundFileURLRef;
soundFileURLRef = CFBundleCopyResourceURL(mainBundle, (CFStringRef) @"sound1" , CFSTR ("wav") , null);
}

uint32 soundID;
AudioservicecreatesystemsoundID(soundfileURLRef, &soundID);
AudioservicesPlaysystemsound(soundID) 



- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}
@end

ありがとう、あなたが私を助けてくれることを願っています

4

1 に答える 1

0

AudioToolboxは、ここでのニーズに対して少し低レベルである可能性があります... AVFoundationを使用することで、おそらくあなたの生活をはるかに楽にすることができます。具体的には、AVAudioPlayerクラスです。

実装では:

#import <AVFoundation/AVFoundation.h>

- (void)viewDidLoad
{
    NSString      *soundPath = [[NSBundle mainBundle] pathForResource:@"sound1" ofType:@"wav"];
    NSURL         *soundURL  = [NSURL fileURLWithPath:soundPath];
    NSError       *error     = nil;
    AVAudioPlayer *player    = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL error:&error];

    if ( ! player )
    {
        NSLog(@"%@", [error description]);
    }
    else
    {
        [player prepareToPlay];
        [player play];
    }
}

ここではメモリ管理を行っていないことに注意してください。また、一度に複数のサウンドを再生する必要がある場合は、AVAudioPlayerの追加のインスタンスを作成するか、OpenALライブラリをチェックアウトすることができます...ここのgithubに優れたラッパーがあります。

于 2012-04-26T23:18:48.063 に答える