2014-04-30 37 views
1

我想結交有背景音樂在我的遊戲AVAudioPlayer,所以我在initWithSize方法我SKScene的設置驗證碼:誤差AVAudio球員在SKScene

//SETTING BACKGROUND MUSIC// 
NSError * err = nil; 
NSURL * musicFile = [[NSBundle mainBundle] URLForResource:@"Cosmic Rush" withExtension:@"m4a"]; 
music = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:&err]; 
if(err) 
{ 
    NSLog(@"%@", [err userInfo]); 
    return; 
} 
[music prepareToPlay]; 
music.numberOfLoops = -1; 
[music setVolume:0.5]; 
//SETTING BACKGROUND MUSIC// 

然後,在另一種方法: [music play];但是,聲音從未播放,我試過各種擴展名:.mp3,.caf,.mp4等。我也檢查過有同樣問題的人,但沒有解決他們的問題的解決方案與我一起工作。

+0

您是否使用NSLog記錄了任何錯誤?你有沒有嘗試設置斷點? – RaffAl

+0

幾個問題:什麼是您的音頻文件的確切名稱(因爲它出現在您的項目中)?您是否嘗試過在音頻文件名中沒有空格?你有沒有嘗試URLForResource:@「SongName.mp3」withExtension:nil];而不是你目前有什麼(修改MP3的實際格式)?你有沒有設置AVAudioPlayer委託?你能夠播放其他音頻文件或只是不是這個? – sangony

+0

好的,我試着在文件名中沒有空格,用mp3擴展名,現在NSLog框中出現了一個錯誤,但是裏面沒有任何內容。但我沒有設置AVAudioPlayer委託。我怎麼做? –

回答

0

有一種更簡單的方法可以將背景音樂添加到場景中。我使用以下步驟,並且與其他方法一樣好,並且更容易。

將場景頂部的@import AVFoundation;導入。

將此信息添加爲您的@implementation後的財產。

AVAudioPlayer *_backgroundMusicPlayer; 

然後聲明的方法爲樂

- (void)playBackgroundMusic:(NSString *)filename 
{ 
    NSError *error; 
    NSURL *backgroundMusicURL = 
    [[NSBundle mainBundle] URLForResource:filename 
          withExtension:nil]; 
    _backgroundMusicPlayer = 
    [[AVAudioPlayer alloc] 
    initWithContentsOfURL:backgroundMusicURL error:&error]; 
    _backgroundMusicPlayer.numberOfLoops = -1; 
    [_backgroundMusicPlayer prepareToPlay]; 
    [_backgroundMusicPlayer play]; 
} 

後您的-(id)initWithSize:(CGSize)size創造像下面

[self playBackgroundMusic:@"bgMusic.mp3"]; 

該方法的引用,應該採取的背景音樂的護理爲你。

+0

謝謝你的回答,但我發現問題是關於引用我的音頻文件。它在錯誤的位置。 –