如何使用initWithContentsOfURL加载声音文件:错误:?

时间:2012-08-09 18:57:42

标签: objective-c ios avaudioplayer

如何访问我放入xCode Project的Supporting Files文件夹中的crashSound.wav文件?因为以下代码不起作用:

@interface Game()
{
    // code...

    AVAudioPlayer *crashSound;

    // code...
}
@end

@implementation Game

- (id) init 
{ 
    // code...

    NSURL *crashSoundFile = [[NSURL alloc] initWithString:@"crashSound" ]; // <--PROBLEM

    crashSound = [[AVAudioPlayer alloc] initWithContentsOfURL:crashSoundFile error:NULL];

    // code...
}
-(void) play // this is my "main" method that will be called once the playButton is pressed
{
   [crashSound play];[crashSound play];[crashSound play];

}
@end

2 个答案:

答案 0 :(得分:1)

@"crashSound"不是有效的网址。您必须提供实际的网址。

项目中图像,声音等(资源)的URL在编译时是不可预测的,必须在运行时生成。使用NSBundle很容易。

NSBundle *bundle = [NSBundle mainBundle];
NSURL *crashSoundFile = [bundle URLForResource: @"crashSound" withExtension: @"wav"];

Ta da。

答案 1 :(得分:0)

NSURL * url = [NSURL fileURLWithPath:[NSString stringWithFormat:@“%@ / soundfile.extension”,[[NSBundle mainBundle] resourcePath]]];