2012-04-21 78 views
0

我正在優化遊戲,以便在有來電時或因任何其他原因移動到背景時,應該停止音樂,定時器和正確暫停。將應用程序移動到背景時音樂不會停止

除了因爲某種原因音樂不會停止播放,即使我發出命令讓它停止以外,它的功能也很棒。更奇怪的是,當遊戲返回到前臺時,有2個背景音樂正在播放,而不是一個。

這裏是我的我的一些代碼,沒有什麼太複雜或不尋常的:

... 

NativeApplication.nativeApplication.systemIdleMode = SystemIdleMode.KEEP_AWAKE; 
      NativeApplication.nativeApplication.addEventListener(Event.ACTIVATE, handleActivate); 
      NativeApplication.nativeApplication.addEventListener(Event.DEACTIVATE, handleDeactivate); 
... 
private function handleActivate(event:Event):void 
     { 

      stage.frameRate = previousFrameRate; 

//if the music was on when the game is moved to the background, then replay it when its moved back to the foreground 
      if(musicOn) 
      { 
       BGMusic.play(); 
      } 


     } 

     private function handleDeactivate(event:Event):void 
     { 
      BGMusic.stop(); 
      stage.frameRate = 0; 
     } 

值得注意的是,如果我不重播音樂時,遊戲再返回到前臺(即當我在handleActivate中不使用BGMuusic.play()時,不會有任何預期的音樂。只有當我停止音樂並在稍後移動到前景時恢復它時,背景音樂不會停止,並且我會得到兩首播放曲目。

任何想法?正如我所說,一切正常,遊戲正確暫停。我在Flash Builder模擬器上測試這個,因爲我沒有必要的證書來直接在iphone上測試它。所以也許這是模擬器本身的問題,而不是代碼。

在此先感謝

編輯:我與Flash和Adobe AIR的

回答

1

嗯,這是愚蠢的我寫的。一切工作正常我只是忘了給if語句添加另一個條件。因此,而不是:

  if(musicOn) 
      { 
       BGMusic.play(); 
      } 

應該

  if(musicOn && !BGMusic.isPlaying()) 
      { 
       BGMusic.play(); 
      } 

現在一切工作正常...我會musicOn的變量名稱更改爲類似musicButtonOn瞭解得更透徹些。

無論如何感謝您的幫助。如果您有任何提示或意見,請隨時告訴我= D

0
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag { 
     NSLog(@"Playing stoped"); 
     [player stop]; 
} 
+0

這看起來像我的Objective-C。我正在用Flash和Adobe Air編寫遊戲。你能向我解釋這可能會如何幫助我嗎? =) – r3x 2012-04-21 11:58:43

相關問題