for (int i = enemigos.size-1; i >= 0; i--){
enemigos.get(i).posicion.x += enemigos.get(i).speed * Gdx.graphics.getDeltaTime(); <== HERE NULL POINTER
enemigos.get(i).update(dt);
if(enemigos.get(i).posicion.x < 0 - enemigos.get(i).currentFrame.getRegionWidth() || enemigos.get(i).posicion.x > 600){
enemigos.removeIndex(i);
}
}
此代码位于我项目SpriteManager中的update(float dt)
内,我在其中更新游戏中的所有对象。
这一次读取敌人名单并每次都更新位置......
但是当我开始游戏时,它会保持0-20秒,直到有时会在敌人的position.x更新中捕获空指针。
为什么呢?
错误:
Exception in thread "LWJGL Application" java.lang.NullPointerException
at juannmcc.manager.pescador.SpriteManager.update(SpriteManager.java:131)
at juannmcc.pantallas.pescador.PantallaJuego.render(PantallaJuego.java:39)
at com.badlogic.gdx.Game.render(Game.java:46)
at juannmcc.game.pescador.Juego.render(Juego.java:48)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
答案 0 :(得分:0)
使用
enemigos.removeIndex(i++);
删除一个敌人后,你需要返回一个索引。