添加到数组或链接器列表时游戏崩溃

时间:2012-06-29 16:46:21

标签: java android arraylist linked-list andengine

所以我遇到了添加到ArrayList或链接列表的问题(尝试了两者,但每次崩溃都相同)。我正在使用AndEngine教程(Jimvaders,它运行良好),但是当它适应我自己的项目时,它无法正常工作。基本上,当我射击子弹时,它会被添加到子弹列表中,但是在我的项目中,尝试从playerChar类触摸位于GameScene中的ArrayList或LinkedList会导致整个游戏崩溃。我还没有对列表做任何事情,所以这只是将我的Pl​​ayerBullet添加到导致问题的列表中的行为。

GameScene:

public ArrayList<PlayerBullet> bulletList;

在我的PlayerChar课程中

public void shoot(int playerFacing) { //TODO

    GameScene scene = (GameScene) BaseActivity.getSharedInstance().getCurrentScene();
    float shootX = 2;

    PlayerBullet b =(PlayerBullet)PlayerBulletPool.sharedBulletPool().obtainPoolItem();

    if (playerFacing == -1){
        shootX *= -1;
    }
    else{
        shootX += this.getWidth();
    }


    b.sprite.setPosition(this.getX() + shootX, this.getY()+(this.getHeight()/2));
    MoveXModifier mod = new MoveXModifier(0.5f, b.sprite.getX(), mCamera.getCenterX() + (mCamera.getWidth()*playerFacing));

    b.sprite.setVisible(true);
    b.sprite.detachSelf();
    scene.attachChild(b.sprite);
    //Log.v("checkin", "works to here");
    scene.bulletList.add(b);//<---------Crashes Here, works fine if this line is commented out

    //Log.v("checkin", "still working?");
    b.sprite.registerEntityModifier(mod);

}

任何见解都会有所帮助。感谢

1 个答案:

答案 0 :(得分:1)

我的猜测是你有一个NullPointerException,虽然如果你告诉我们会有帮助。这一行:

scene.bulletList.add(b);

要求scenescene.bulletList都为非空。我们可以告诉scene非空,但我怀疑scene.bulletList为空 - 你在哪里认为你正在初始化它?

(顺便说一句,我强烈建议你避免使用公共变量。我可能会将addBullet方法放入GameScene - 并且可能会生成现在私有的类型{{1}变量bulletList ...仅在初始化变量时指定List<PlayerBullet>。)