2015-02-11 86 views
0

我使用此代碼來循環播放我的Sprite Kit遊戲中的一首歌曲,但是當我離開應用/遊戲時,歌曲繼續播放,並且我不知道如何停止歌曲下車遊戲:聲音一直在Sprite Kit遊戲上播放

url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"deep-blue-sea" ofType:@"wav"]]; 
    _sound = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil]; 
    _sound.delegate = self; 
    _sound.numberOfLoops = -1; 
    [_sound play]; 

請有人可以幫我怎麼做嗎?

回答

0

UIApplicationDelegate協議有一個名爲applicationWillResignActive:的方法。 The documentation說:

調用此方法可讓您的應用程序知道它即將從活動狀態移至非活動狀態。對於某些類型的臨時中斷(例如來電或短信)或者用戶退出應用程序並開始轉換到後臺狀態時,可能會發生這種情況。處於不活動狀態的應用程序會繼續運行,但不會將傳入的事件分派給響應者。

您應該使用此方法暫停正在進行的任務,禁用定時器並降低OpenGL ES幀速率。遊戲應該使用這種方法來暫停遊戲。處於不活動狀態的應用程序在等待轉換到活動狀態或背景狀態時應該做最少的工作。

完美的時間停止音樂! AVAudioPlayer有一個stop方法來停止播放,就像play方法開始播放一樣。您在評論中提到您的音頻播放器位於SKScene中。因此,我將創建停止音樂場景的方法:

-(void)stopMusic { 
    [_player stop]; 
} 

,然後調用方法AppDelegate

-(void)applicationWillResignActive:(UIApplication *)application { 
    [scene stopMusic]; //scene is your SKScene subclass 
} 
+0

謝謝,但我必須在AppDelegate.h中實現AVAudioPlayer框架以使用stop方法嗎?我在SKScene中聲明瞭_sound屬性,我如何在AppDelegate中使用它? – 2015-02-11 00:38:24

+0

@FacundoSchiavoni看我的編輯。 – NobodyNada 2015-02-11 00:47:03