设置新屏幕时崩溃
Crash when setting a new screen
在我即将完成的游戏中,我想在游戏结束时设置一个新屏幕。我的游戏结束方法:
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)
尝试更新您的代码以匹配以下内容:
private void gameOver(Label score) {
for (Body body : worldBodies) {
world.destroyBody(body);
}
dispose();
myGame.setScreen(new GameOver());
}
第一个问题是你是 disposing/loading 循环的 GameOver
屏幕 inside 而不是 after它。
第二个问题是您拨打 Gdx.app.getApplicationListener()
。每次你调用它 returns 你的 Game
的一个新实例。相反,您需要保留对您的游戏的引用并使用它。
如果您仍然遇到同样的错误,请确保您正确地调用了 dispose()
。如果资源在释放之前就被处理掉,那么您可能会遇到一些非常严重的崩溃。
在我即将完成的游戏中,我想在游戏结束时设置一个新屏幕。我的游戏结束方法:
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)
尝试更新您的代码以匹配以下内容:
private void gameOver(Label score) {
for (Body body : worldBodies) {
world.destroyBody(body);
}
dispose();
myGame.setScreen(new GameOver());
}
第一个问题是你是 disposing/loading 循环的 GameOver
屏幕 inside 而不是 after它。
第二个问题是您拨打 Gdx.app.getApplicationListener()
。每次你调用它 returns 你的 Game
的一个新实例。相反,您需要保留对您的游戏的引用并使用它。
如果您仍然遇到同样的错误,请确保您正确地调用了 dispose()
。如果资源在释放之前就被处理掉,那么您可能会遇到一些非常严重的崩溃。