Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 添加到数组或链接器列表时游戏崩溃_Java_Android_Arraylist_Linked List_Andengine - Fatal编程技术网

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

Java 添加到数组或链接器列表时游戏崩溃,java,android,arraylist,linked-list,andengine,Java,Android,Arraylist,Linked List,Andengine,因此,我在添加到ArrayList或链接列表时遇到了一个问题(尝试了这两种方法,但每次崩溃都是一样的)。我正在编写一个AndEngine教程(Jimvaders,它工作得很好),但是当我把它应用到自己的项目中时,它不能正常工作。基本上,当我射击子弹时,它会被添加到子弹列表中,但在我的项目中,试图从playerChar类中触摸游戏场景中的ArrayList或LinkedList会导致整个游戏崩溃。我甚至还没有对列表做任何处理,所以就我所知,只是将我的PlayerBullet添加到列表中的行为造成了

因此,我在添加到ArrayList或链接列表时遇到了一个问题(尝试了这两种方法,但每次崩溃都是一样的)。我正在编写一个AndEngine教程(Jimvaders,它工作得很好),但是当我把它应用到自己的项目中时,它不能正常工作。基本上,当我射击子弹时,它会被添加到子弹列表中,但在我的项目中,试图从playerChar类中触摸游戏场景中的ArrayList或LinkedList会导致整个游戏崩溃。我甚至还没有对列表做任何处理,所以就我所知,只是将我的PlayerBullet添加到列表中的行为造成了问题

游戏场景:

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);

}
public void shot(int playerFacing){//TODO
游戏场景场景=(游戏场景)BaseActivity.getSharedInstance().getCurrentScene();
浮点数x=2;
PlayerBullet b=(PlayerBullet)PlayerBulletPool.sharedBulletPool().ActainPoolItem();
如果(playerFacing==-1){
shootX*=-1;
}
否则{
shootX+=this.getWidth();
}
b、 setPosition(this.getX()+shootX,this.getY()+(this.getHeight()/2));
MoveXModifier mod=新的MoveXModifier(0.5f,b.sprite.getX(),mCamera.getCenterX()+(mCamera.getWidth()*playerFacing));
b、 sprite.setVisible(真);
b、 雪碧。自我分离();
场景。attachChild(b.sprite);
//Log.v(“签入”,“工作到这里”);

scene.bulletList.add(b);//我猜你有一个NullPointerException,不过如果你告诉我们会有所帮助。这一行:

scene.bulletList.add(b);
要求
scene
scene.bulletList
都是非空的。我们可以看出
scene
是非空的,但我怀疑
scene.bulletList
是空的-您认为在哪里初始化它


(顺便说一句,我强烈建议您避免使用公共变量。我可能会在
游戏场景中加入
addBullet
方法,并可能将现在私有的
bulletList
变量
List
…仅在初始化变量时指定
ArrayList

我猜你有一个NullPointerException,不过如果你告诉我们会有帮助。这行:

scene.bulletList.add(b);
要求
scene
scene.bulletList
都是非空的。我们可以看出
scene
是非空的,但我怀疑
scene.bulletList
是空的-您认为在哪里初始化它


(顺便说一句,我强烈建议您避免使用公共变量。我可能会在
游戏场景中加入
addBullet
方法,并可能将现在私有的
bulletList
变量
List
…仅在初始化变量时指定
ArrayList

是否正确初始化了bulletList数组?您有
公共ArrayList bulletList;
但从未创建过新数组。例如,您可能需要说
公共ArrayList bulletList=new ArrayList()
它会因为抛出错误而崩溃吗?如果是,你能告诉我们错误吗?是的,我忘了初始化它。修复了问题。谢谢你的帮助。你正确初始化了bulletList数组吗?你有
公共ArrayList bulletList;
但是你从来没有创建过新数组。例如,你可能需要说
公共ArrayList bulletList=新的ArrayList()
它会因为抛出错误而崩溃吗?如果是,你能告诉我们错误吗?是的,我忘记初始化它了。修复了问题。谢谢你的帮助。谢谢。这就是问题所在。我忘记初始化它了。我已经有一段时间没有使用Java了,键入变量有时会让我觉得我已经确定了它是什么d是的。谢谢。这就是问题所在。我忘了初始化它。我使用Java已经有一段时间了,键入变量有时让我觉得我已经建立了它应该是什么。