0
好的,所以我正在使用SpriteKit進行遊戲,並且整個應用程序中都有背景音樂。最初,我剛剛在每個場景中使用了一個新的AVAudioPlayer
以及適當的音頻文件,但是現在我發現在菜單之間移動時我想要不間斷的音頻播放。所以我試圖用一個單獨的類來處理所有的背景音樂。我不知道這在技術上是否可行,如果不是,我想看看是否有另一種方法來解決我的問題。從SpriteKit的課程中播放音頻
所以到代碼...這裏是我的音頻類的頭文件:
#import <AVFoundation/AVFoundation.h>
typedef NS_ENUM(int, songTitle) {
Menu_Music,
Level_1,
Level_2,
Game_Over,
};
@interface NWAudioPlayer : AVAudioPlayer
@property (nonatomic, assign) songTitle songName;
@property (nonatomic) AVAudioPlayer* bgPlayer;
-(void)createAllMusicWithAudio: (songTitle)audio;
@end
和這裏的實現:
#import "NWAudioPlayer.h"
@implementation NWAudioPlayer
-(void)createAllMusicWithAudio: (songTitle)audio {
if ([[GameState sharedGameData] audioWillPlay] == YES) {
switch (audio) {
case Menu_Music:
[self playMusicWithString:@"menuMusic"];
break;
case Level_1:
[self playMusicWithString:@"Level-1-Music"];
break;
case Level_2:
[self playMusicWithString:@"Level-2-Music"];
break;
case Game_Over:
break;
default:
break;
}
}
}
-(void)playMusicWithString: (NSString *)file {
NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"menuMusic" ofType:@"m4a"];
NSURL *soundFileUrl = [NSURL fileURLWithPath:soundFile];
NSError *Error = nil;
_bgPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileUrl error:&Error];
_bgPlayer.numberOfLoops = -1;
[_bgPlayer prepareToPlay];
NSLog(soundFile);
}
@end
然後這裏是我在我的場景的實現:
-(void)createAudio
{
[[NWAudioPlayer alloc] createAllMusicWithAudio:Menu_Music];
[[NWAudioPlayer alloc].bgPlayer play];
}
,顯然我會在init FO調用[self createAudio]
那個場景。
令人沮喪的部分是,我沒有得到一個單一的錯誤,我的NSLog顯示該方法正在調用正確的音頻文件,但沒有播放。顯然我錯過了一些東西......我很難過。任何幫助表示讚賞!非常感謝!
好的,我對使用單身人士並不是很熟悉,所以請原諒我的無知。我會如何做與我的NSAudioPlayer類不同,使它成爲一個單例實例,而不管它現在是什麼? – 2014-10-18 21:49:52
好吧,我想我明白了。無論如何,我有一個基本的單身人士。感謝指針! – 2014-10-18 22:52:42