我正在嘗試創建一個簡單的BreakOut克隆,以使我熟悉LibGDX和scene2d。然而,在組裝一個非常基本的例子以讓我自己開始之後,我得到了一個非常明確定義的對象的NullPointerException。getX()調用的NullPointerException(Scene2d + Libgdx)
我有一個名爲Paddle的Actor類,它在我的程序中調用了一個實例,簡單地說就是paddle。它被聲明爲全局變量並在create()方法中初始化。當我運行該程序,它在我的渲染()在檢查代碼方法返回一個錯誤,如果槳是屏幕的範圍之外:
// make sure the paddle stays within the bounds of the screen
if(paddle.getX() < 0) paddle.setX(0); // <--- error is detected here
if(paddle.getX() > 800 - 200) paddle.setX(600);
以下是錯誤返回:
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: java.lang.NullPointerException
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:111)
Caused by: java.lang.NullPointerException
at com.freakout.Game.render(Game.java:150)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:190)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:108)
這裏是Paddle類;
public class Paddle extends Actor {
TextureRegion region;
public Paddle(){
region = new TextureRegion(new Texture(Gdx.files.internal("paddle.png")), 800/2 - 200 /2, 20);
}
}
Here's the code萬一它有助於看看整件事。
編輯:我找到了答案多虧了評論: 我意識到什麼posting-照顧像我重新定義了槳變量的範圍(通過使用槳槳=新槳(我已立即錯過... ))是本地方法而不是全局方法。因此,當它嘗試訪問該對象時,它總是返回null,因爲該對象在create()方法之外不可訪問。
如果您的演員在基本通話時無法正常工作,那可能是您的罪魁禍首。
如何分配paddle變量? – matsev
oi,哇。我正要粘貼實例並向您顯示,但我意識到我已經在創建時重新定義了paddle變量的範圍,因此它是本地的。不能相信我沒有聽到。感謝您的提醒。 – user1760501