0

その中にタッチパッドがある GameScreen クラスがあります。タッチパッドの getKnobPercentY を取得する GameScreen クラス内にメソッド (setTouchpadY()) があります。

public float setTouchpadY() {
  return touchpad.getKnobPercentY();

}

私の WorldRenderer クラスである render() メソッドでは、タッチパッドでスプライトを回転させようとしています。gs は GameScreen クラスです

public void render() {
  //render stuff
  moveCamera(leon.getPosition().x, CAMERA_HEIGHT / 2);
  spriteBatch.setProjectionMatrix(cam.combined);
  spriteBatch.begin();
  drawVillage();
  drawTile();
  drawLeon();
  spriteBatch.end();

            if (leon.isAiming()) {
     leonAimArmSpriteR.rotate(gs.setTouchpadY());         //This line causing crash
  }

}

画面と入力プロセッサを実装しているため、タッチパッドとボタンを Gamescreen クラスに入れました。これまでのところ、それらを WorldRenderer に入れようとしましたが、運がありませんでした。ここに私の logcat/コンソールがあります。これは、デスクトップ バージョンを実行しようとした場合です。

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NullPointerException
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:113)
Caused by: java.lang.NullPointerException
at com.me.RE4.view.WorldRenderer.render(WorldRenderer.java:142)
at com.me.RE4.screens.GameScreen.render(GameScreen.java:151)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:191)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:110)

編集だから、GameScreenをインスタンス化していないことがわかりました.WorldControllerがnullであると言っていました。そのため、WorldRenderer で WorldController をインスタンス化しましたが、GameScreen 内の TouchpadY() メソッドが null であり、ブレーク ポイントを設定すると、あらゆる種類の変数が null として表示されます。

ここに画像の説明を入力

4

1 に答える 1

0

さて、私は最初にWorldRenderer内で、renderメソッド内で回転を実行しようとしていました。これにより、タッチパッドを特定のポイントで安定させたままにして、その程度で回転を続けることができます。それを機能させるには、WR内の多くのアイテムをインスタンス化/参照する必要があったので、最終的にWRでゲーム画面をインスタンス化し、GSで回転させたいスプライトを参照すると、タッチパッドの値がGS。むちょだらしない

于 2013-02-04T18:05:32.023 に答える