У меня есть класс GameScreen, в котором есть тачпад. У меня есть метод (setTouchpadY()) в классе GameScreen, который получает сенсорную панель getKnobPercentY.
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 является нулевым. Итак, я создал экземпляр WorldController в WorldRenderer, но затем он говорит, что метод TouchpadY() в GameScreen имеет значение null, устанавливает точку останова, и это дает мне все виды переменных как null.