GDX NullPointerException敌人更新

时间:2014-03-01 23:39:01

标签: java android nullpointerexception libgdx

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)

1 个答案:

答案 0 :(得分:0)

使用

enemigos.removeIndex(i++);

删除一个敌人后,你需要返回一个索引。