在我几乎完成的游戏中,我想在游戏结束时设置一个新屏幕。我把游戏放在了方法上:
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)
答案 0 :(得分:2)
尝试更新您的代码以符合以下条件:
private void gameOver(Label score) {
for (Body body : worldBodies) {
world.destroyBody(body);
}
dispose();
myGame.setScreen(new GameOver());
}
第一个问题是你在之后处理/加载1>}屏幕而不是。
第二个问题是您致电GameOver
。每次调用它都会返回Gdx.app.getApplicationListener()
的新实例。相反,你需要保持对游戏的引用,而不是使用它。
如果仍然出现同样的错误,请确保正确调用Game
。如果资源在被释放之前被处置掉,那么你可以得到一些非常讨厌的崩溃。