我目前在我的應用程序中播放背景音樂。 在:檢查音樂是否正在播放
-(void)viewDidLoad
我開始了音樂,使用:
[self LoadMusic];
這基本上啓動然後音樂緩衝區,如果設置指出「聲音是在」音樂開始。
我遇到的問題是當我移動視圖時,音樂繼續播放(因爲它應該),但是當你回到音樂最初開始的視圖控制器時,它會再次激活。
所以你最終會得到相同的音樂循環。
我已經嘗試了一些東西,比如:
if(MusicPlay.playing){
// do nothing
}else{
// start music
[self LoadMusic];
}
這是loadMusic
- (void) LoadMusic{
//Notification for stoping
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(stopMusic) name:@"StopMusic" object:nil];
//Notification for playing
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playMusic) name:@"PlayMusic" object:nil];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *SoundSwitch = [defaults stringForKey:@"Sound_EnabledS"];
// grab the path to the caf file
NSString *soundFilePath =
[[NSBundle mainBundle] pathForResource: @"Menu_Loop"
ofType: @"mp3"];
NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
// create a new AVAudioPlayer initialized with the URL to the file
AVAudioPlayer *newPlayer =
[[AVAudioPlayer alloc] initWithContentsOfURL: fileURL
error: nil];
// set our ivar equal to the new player
self.MusicPlay = newPlayer;
// preloads buffers, gets ready to play
[MusicPlay prepareToPlay];
MusicPlay.numberOfLoops = -1; // Loop indefinately
if ([SoundSwitch isEqualToString:@"1"]){
[self.MusicPlay play]; // Plays the sound
}else{
[self.MusicPlay stop]; // Stops the sound
}
}
的代碼,但因爲它沒有看到MusicPlay.playing是唯一真正的一次,這是行不通該視圖已'重新啓動'
如果有人有一個很好的方法來解決這個問題。 請讓我知道。
謝謝。
你能PLZ粘貼LoadMusic方法的代碼 –
見上面檢查。謝謝。 –