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つの再生トラックが表示されるのは、音楽を停止し、後でフォアグラウンドに移動したときに再開したときだけです。

何か案は?私が言ったように、他のすべてはうまく機能し、ゲームは正しく一時停止します。私はこれをFlashBuilderエミュレーターでテストしています。これは、iPhoneで直接テストするための証明書が必ずしも必要ではないためです。したがって、コードではなくエミュレータ自体に問題がある可能性があります。

前もって感謝します

編集:フラッシュとアドビエアでこれを書いています

4

2 に答える 2

1

まあそれは私には愚かだった。すべてが正常に機能しています。ifステートメントに別の条件を追加するのを忘れました。したがって、代わりに:

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

そのはず

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

これですべてが正常に機能します...musicOnの変数名をmusicButtonOnのようなより明確な名前に変更します。

とにかく助けてくれてありがとう。ヒントやコメントがあれば、遠慮なく教えてください= D

于 2012-04-21T13:27:21.987 に答える
0
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {
      NSLog(@"Playing stoped");
      [player stop];
}
于 2012-04-21T11:37:31.130 に答える