4

初めてのゲームのゲームループの作成で問題が発生しました。私はそれについてたくさん読みましたが、まだ理解できません。これは 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 に配置して開始しようとしましたが、効果はありません。それで - 一般的な考えは大丈夫ですか?そして、ループを開始する方法は?どこに置く?または、他の方法を使用する必要がありますか?

4

1 に答える 1

0

わかりました簡単でした-r.run()がありませんでした。しかし、いつものように何かがあります。フレームはハードウェアに依存しませんが、すべてが以前ほどスムーズではありません。また、3D のオブジェクトの一部がちらつきます。目に見えて速く描画されるオブジェクトもあれば、遅く描画されるオブジェクトもあり、見栄えが悪いようです。それで、私は何を間違っていますか?より良い方法はありますか?

于 2013-02-12T20:13:32.473 に答える