ゲームループとアクティブレンダリング(SurfaceViewとSurfaceHolder.Callbackを使用)を使用してゲームを実行しています。
それを時限イベントやタッチイベント管理と一緒に機能させる方法を考えています。時限イベントは、xxミリ秒ごとに何かが発生し、yyミリ秒ごとに何かが発生するようなものです。タッチ管理は、下、上、移動時にゲームと画面を更新することです。
何度か試してみましたが、どういうわけかぎこちなく、ゲームのパフォーマンスがあまり良くありません。
一方では、古典的なゲームループ(別のスレッド)があります:更新、レンダリング、描画、スリープの実行中
今、私はこれをタイマーループで機能させる方法をよく知りませんでした。私はハンドラーアプローチを使用しました-ハンドラーを拡張するクラスを作成し、handleMessageで実行する必要があることを実行してから、sendMessageDelayedを使用して自分自身を呼び出します。
ゲームの状態を更新するだけです。結果の変更のレンダリングは、gameLoopで行われます。
このアプローチでは、タイマーの更新を妨げずに、ゲームループの更新を同期する必要があります。
そして-これに加えて、私はタッチイベントを処理する必要があります-下、上、そして移動!ここでの私のアプローチは、タイマーの場合と同様に、ゲームの状態を更新し、ループに任せて正しく処理および表示することでした。
私が完全に間違った道を進んでいるのかどうかはわかりませんが、Androdに向かって、「うまくいく」と思ったようにそれを作りました。
たとえば、別のスレッドでゲームループを作成する必要があるかどうかはわかりません。あるフレームレートでのタッチハンドリング(移動)の結果を表示することだと思いました。
反対側では、ループを離れて、タイマーが更新されるたび、およびタッチ処理が行われるたびに描画するように指示することもできますが、これもうまく機能しません。
問題は、この種のゲームの一般的なアプローチは何ですか?(画面に連続的にレンダリングする必要があるタイミングループ/タッチイベント(移動))。
前もって感謝します。