Libgdx游戏冻结在stage.draw()

时间:2014-05-13 08:12:06

标签: java libgdx

我的Libgdx游戏出现了一个奇怪的问题,当我打电话给" stage.draw()"时,它会冻结。奇怪的是,这只会在我转换到相关屏幕时发生。例如,我在此屏幕之前有两个启动画面,在它们成功完成后,它会在此屏幕上冻结。但是,如果这是第一个要显示的屏幕,它运行正常。

编辑:为了澄清冻结的含义,它在黑屏上无所事事,我的鼠标转到加载符号,直到我点击某处,此时我得到一个真正的Java pop-让我知道" Java(TM)平台SE二进制文件已停止工作"。事件名称:APPCRASH。

MenuScreen'渲染:

    @Override
    public void render(float delta) {
            super.render(delta);
            batch.begin();
            background.draw(batch);
            batch.end();
            stage.act(delta);
            stage.draw();
    }   

AbstractScreen'渲染:

    @Override
    public void render(float delta) {
            Gdx.gl.glClearColor(0f, 0f, 0f, 1f);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    }

我已经调试了它,可以告诉它到达STAGE.draw()并挂起。如果我从舞台上删除所有内容,则不会发生这种情况。舞台设置如下:

    @Override
    public void show() { 
            super.show();

            background = new Sprite(buildTexture(backgroundTextureNode));

            stage = new Stage();
            Gdx.input.setInputProcessor(stage);

            table = new Table();
            table.setFillParent(true);

            heading = buildLabel(headingNode);
            table.add(heading).spaceBottom(TITLE_SPACE);
            table.row();

            transitionButtons.addAll(buildTransitionButtons(transitionButtonNodes));

            for(final TextButton button : transitionButtons) {
                    table.add(button);
                    table.row();
            }

            stage.addActor(table);
    }

我认为它可能与字体有关,但我使用默认字体制作了一个新标签,它也遇到了同样的问题。

编辑:这是我的主题转储:http://pastebin.com/JqB8fX85

修改:我有Gdx记录每个来电。这就是我得到的:

SplashScreen:名为
的构造函数 SplashScreen:显示称为
SplashScreen:7.0秒转换
SplashScreen:调整大小,称为
TYR:设置屏幕:SplashScreen
TYR:创造 SplashScreen:调整大小,称为
TYR:将游戏大小调整为:1920 x 1080
SplashScreen:处理称为
SplashScreen:构造函数称为
SplashScreen:隐藏称为
SplashScreen:显示称为
SplashScreen:7.0秒转换
SplashScreen:调整大小,称为
TYR:设置屏幕:SplashScreen
SplashScreen:名为

的Dispose

更新 如上所述,我有两个屏幕在菜单屏幕之前冻结。当我将那些sprite.draw(批处理)行注释掉时,它会进入第三个屏幕。经过进一步审查后,我注意到在补间回调事件期间我调用了dispose。我对此进行了评论,看看它是否以某种方式导致崩溃,并且确定它已经完全消失了。

0 个答案:

没有答案