Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java libgdx-游戏屏幕赢得';不显示_Java_Android_Libgdx - Fatal编程技术网

Java libgdx-游戏屏幕赢得';不显示

Java libgdx-游戏屏幕赢得';不显示,java,android,libgdx,Java,Android,Libgdx,//这是我的脚本,我称之为游戏屏幕。当我的精灵与另一个精灵重叠时,我希望它设置为此屏幕 if (grumpface.whiteballoon.getBoundingRectangle().overlaps(spriterect)) { System.out.println("hey"); ((Game) Gdx.app.getApplicationListener()).setScreen(new GameOverScreen());

//这是我的脚本,我称之为游戏屏幕。当我的精灵与另一个精灵重叠时,我希望它设置为此屏幕

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)

问题是,您正在
show()
方法中创建一个名为
stage
的变量,但应该使用类变量

public void show()
{
 stage= new Stage();
}
它应该是这样的:
stage=newstage()


分配
Stage Stage=new Stage()时的原因在您的节目中,它将在局部变量
stage
中写入,而不是在类变量中写入。因此,在
show()之后,甚至创建的
Stage
都是垃圾方法。因此,当您输入
渲染(浮点增量)时
method
stage
类变量为
null
,发生异常。

您正在show()方法中创建名为stage的局部变量,而名为stage的全局变量尚未初始化,这就是为什么会出现名为null pointer exception的异常。在show()方法中初始化全局阶段,而不是创建新的局部变量

public void show()
{
 stage= new Stage();
}
如果您混淆了局部变量和全局变量,请查看以下链接: