2012-04-21 20 views
0

着信があった場合や、その他の理由でバックグラウンドに移動した場合、音楽やタイマーを一時停止して正しく停止するようゲームを最適化しています。アプリをバックグラウンドに移動するときに音楽が停止しない

何らかの理由で、音楽を停止するコマンドが発行されたにもかかわらず、音楽が停止しないという事実以外は素晴らしいことです。奇妙なのは、ゲームがフォアグラウンドに戻ったときに、1つではなく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()を使用しないと、期待どおりの音楽はありません。バックグラウンドミュージックが止まらないフォアグラウンドに移動して2つの演奏トラックを取得するときに、音楽を停止してから再開するときだけです。

アイデア?私が言ったように、他のすべては正常に動作し、ゲームは正しく一時停止する。私はフラッシュビルダーエミュレータでこれをテストしています。アイフォーンで直接テストするための証明書がないからです。だから多分それはエミュレータ自体の問題ではなく、コードです。事前に

おかげ

EDIT:フラッシュと私の愚かだったのAdobe AIR

答えて

1

まあでこれを書いています。すべて正常に動作していますif文に別の条件を追加するのを忘れてしまっただけです。だから、代わりに:それは

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

すべてが今、正常に動作する必要があります

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

...私はmusicButtonOnのような明確なものにmusicOnの変数名を変更します。

とにかくおかげさまで助けてください。ヒントやコメントがあれば教えてください。= D

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

これは私にとって客観的なものです。私はフラッシュとAdobeの空気でゲームを書いています。これが私を助けてくれるかもしれないことを私に説明できますか? =) – r3x

関連する問題