こんにちは、ゲームの一時停止に取り組んでいます。ほぼ動作していますが、理解できない誤動作がいくつかあります。
基本的に、フレーム レートを一時停止してからフレーム レートを再開するコード (以下) があります。コードの両方のスニペットは個別に正しく機能しますが、まとめて「p」を押すと、両方のコードのスニペットが即座に循環し、2 番目のコードのみが効果的に実行されます (トレースを挿入すると、両方のコードが実行されていることがわかります) "p" を 1 回押します。)
ですから、私の最初の主な質問は、どうすればこれを機能させることができるかということです。「p」を押してゲームを一時停止したときにコードの 1 つのスニペットを実行し、その後、「p」をもう一度押して他のスニペットを実行できるようにしたいだけです。
2 番目の質問は、フレーム レートをトレースすると、0 ではなく 0.01 と表示されるのはなぜですか? この種の興味深いものを見つけました....とにかく、ここにコードがあります。さらにコンテキストが必要な場合は教えてください。ただし、必要ないと思います。
if (stage.frameRate == 30)
{
if (keyboardEvent.keyCode == Keyboard.P)
{
dispatchEvent(new NavigationEvent(NavigationEvent.PAUSEGAME));
stage.frameRate = 0;
checkIfPaused = true;
trace("pause game");
trace(stage.frameRate);
}
}
if (stage.frameRate == 0.01)
{
if (keyboardEvent.keyCode == Keyboard.P)
{
stage.frameRate = 30;
dispatchEvent(new NavigationEvent(NavigationEvent.RESUMEGAME));
checkIfPaused = false;
trace("resume game");
}
}