设置新屏幕时崩溃

时间:2015-09-02 20:06:29

标签: java android crash libgdx

在我几乎完成的游戏中,我想在游戏结束时设置一个新屏幕。我把游戏放在了方法上:

    private void gameOver(Label score) {
    for (Body body : worldBodies) {
        world.destroyBody(body);
    }
    dispose();
    ((Game) Gdx.app.getApplicationListener()).setScreen(new GameOver());
}

每当调用该方法时,屏幕会冻结一秒钟,游戏会因此语句崩溃:

JNI DETECTED ERROR IN APPLICATION 
09-02 22:04:34.036      391-425/com.joelbrun.jetskirider.android A/libc﹕ Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 425 (GLThread 29501)

1 个答案:

答案 0 :(得分:2)

尝试更新您的代码以符合以下条件:

private void gameOver(Label score) {
    for (Body body : worldBodies) {
        world.destroyBody(body);
    }
    dispose();
    myGame.setScreen(new GameOver());
}

第一个问题是你在之后处理/加载}屏幕而不是

第二个问题是您致电GameOver。每次调用它都会返回Gdx.app.getApplicationListener()的新实例。相反,你需要保持对游戏的引用,而不是使用它。

如果仍然出现同样的错误,请确保正确调用Game。如果资源在被释放之前被处置掉,那么你可以得到一些非常讨厌的崩溃。