初めてのゲームのゲームループの作成で問題が発生しました。私はそれについてたくさん読みましたが、まだ理解できません。これは OpenGL に基づいているため、onDrawFrame をゲーム ループとして使用しました。私の電話では問題なく動作します。問題は、onDrawFrame の更新時間がハードウェアに依存するため、一部のデバイスでは実行速度が速すぎることです。だから私が欲しいのは、すべてのスマートフォンで一定時間ごとに更新される別のゲームループを追加することです. (そして、onDrawFrame は必要に応じてグラフィックのみを処理します)
今のところ私は持っています:
- すべての openGl 要素と onDrawFrame を含む myGameRenderer クラス
- タッチ イベントをサポートする myGLSurfaceView
- myGameActivity
onDrawFrame は、myGLSurfaceView からの情報に応じて、ゲーム内のすべてのオブジェクトの位置の変更を制御する myGameUpdate 関数をアクティブにします。
新しい Runnable を作成しようとしましたが、うまくいかないようです。その runnable を開始する方法と、それを配置する場所がわかりません (myGameRenderer クラスに配置しようとしましたが、うまくいきませんでした。動作しているようには見えません。何も動いていませんでした:
private final Runnable mUpdateDisplay = new Runnable() {
@Override
public void run() {
update();
}};
private void update() {
//some update stuff blablabla
//some update stuff blablabla
mHandler.postDelayed(mUpdateDisplay,40); //to refresh at 25 fps
}
しかし、私はそれを理解していないと思います-つまり、このランナブルを作成します。onCreateSurface に配置して開始しようとしましたが、効果はありません。それで - 一般的な考えは大丈夫ですか?そして、ループを開始する方法は?どこに置く?または、他の方法を使用する必要がありますか?