java libgdx游戏屏幕不会显示
//这是我的脚本,我把游戏称为Overscreen。当我的精灵与另一个精灵重叠时,我希望它设置为这个屏幕
if (grumpface.whiteballoon.getBoundingRectangle().overlaps(spriterect)) {
System.out.println("hey");
((Game) Gdx.app.getApplicationListener()).setScreen(new GameOverScreen());
};
下面是我正在设置屏幕的课程。它给了我一个绘制舞台的错误,这让我觉得show()方法并不是在创建舞台
class GameOverScreen implements Screen{
private Stage stage;
// Called automatically once for init objects
@Override
public void show() {
Stage stage = new Stage();
float delta = Gdx.graphics.getDeltaTime();
stage.setDebugAll(true); // Set outlines for Stage elements for easy debug
BitmapFont white = new BitmapFont(Gdx.files.internal("hazey.fnt"), false);
LabelStyle headingStyle = new LabelStyle(white, Color.WHITE);
Label gameoverstring = new Label("game ovaaaa!", headingStyle);
gameoverstring.setPosition(100, 100);
stage.addActor(gameoverstring);
}
// Called every frame so try to put no object creation in it
@Override
public void render(float delta) {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
stage.act();
stage.draw();
}
这里是每当发生重叠时的堆栈跟踪错误
Exception in thread "LWJGL Application" java.lang.NullPointerException
at com.mygdx.game.GameOverScreen.render(GameOverScreen.java:72)
at com.badlogic.gdx.Game.render(Game.java:46)
at com.mygdx.game.MyGdxGame.render(MyGdxGame.java:139)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:214)
at com.badlogic.gdx.backends.lwjgl.LwjglApplicationrun(LwjglApplication.java:120)
# 1 楼答案
您正在show()方法中创建一个名为stage的局部变量,而名为stage的全局变量尚未初始化,这就是为什么您会得到一个名为null pointer exception的异常。在show()方法中初始化全局阶段,而不是创建新的局部变量
如果您混淆了局部变量和全局变量,请查看以下链接:
http://www.amitranjanji.com/2012/05/differentiate-between-global-local.html