私は4回の同時キー押下を使用するゲームに取り組んでいます。キーをすばやく押すとフレームレートが大幅に低下することを除いて、すべて正常に機能します(キーの1つだけをハンマーで叩くと、フレームレートを半分にすることができます)。
最初は、キーを押すとトリガーされるメソッドで多くのことが起こっていると思っていましたが、メソッドからコードを完全に削除すると、速度低下が発生します。
誰かがこれに遭遇したことがありますか?キーを押すと、キーを押したままになるため、フレームごとにメソッド呼び出しが繰り返し発生しますが、これは多くの用途でかなり標準的であり、これまでに遭遇したことはありません。
編集:説明。構造的には、ステージにKEY_DOWNリスナーとKEY_UPリスナーがアタッチされています。
stage.addEventListener(KeyboardEvent.KEY_DOWN, menuKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, menuKeyUp);
次に、次のような5行を含む単一のswitchステートメントを含むメソッドを呼び出します。
case ONE: pressing1 = true; break;
ブールフラグのいずれかがtrueであるかどうかを確認し、文字の移動を処理するENTER_FRAMEイベントがあります。この計算は、キーが押されているかどうかに関係なく行われます(つまり、キーを離しても、重力は影響を及ぼします)。これは60fpsを簡単に保持します。
問題は文字通り、キーが押されたり離されたりした瞬間にあり、ほとんど感知できないほどのフレームドロップがあります。キーを繰り返し押すと、フレームドロップがどんどん悪化します。キーを押したままにすると、フレームレートが低下することはありません。ただし、キーを押したときの1秒のフレームドロップは別です。その後、ゲームは通常通り続行されます。キーを離すと、別の小さな問題が発生し、フレームレートが通常に戻ります。
編集2-フレームレートに何が起こっているのかを正確に確認できるように、フレームレートチェッカーを追加しました。興味深いことに、キーを非常に速く押しても、正確に30fpsより低くすることはできません。ここでFlashPlayerを使用する際に、何らかの制限がありますか?