Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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 Android游戏产卵激光精灵_Java_Android_Eclipse_Sprite - Fatal编程技术网

Java Android游戏产卵激光精灵

Java Android游戏产卵激光精灵,java,android,eclipse,sprite,Java,Android,Eclipse,Sprite,在这个游戏中,我试图在给定的坐标下产生多个激光,但由于某些原因,每当numLasers大于1时,应用程序就会崩溃。我什么都试过了,我真的需要一些帮助 这是我的密码: public class LaserSpawn { private int amountOfVisibleLasers; private Context context; private long timeLastCreatedLaser; private Laser[] holderLaser;

在这个游戏中,我试图在给定的坐标下产生多个激光,但由于某些原因,每当numLasers大于1时,应用程序就会崩溃。我什么都试过了,我真的需要一些帮助

这是我的密码:

public class LaserSpawn {

    private int amountOfVisibleLasers;
    private Context context;
    private long timeLastCreatedLaser;
    private Laser[] holderLaser;

    public LaserSpawn(Context context, int numLasers){
        this.context = context;
        holderLaser = new Laser[numLasers];

        this.amountOfVisibleLasers = numLasers;
        for(int i = 0; i< numLasers; i++){
            holderLaser[0] = new Laser(context, -10, -10);
        }
    }

    public void updatePlayerLaser(boolean shootLaser, float x, float y) {
    // Check if a new Laser should be created

    if(shootLaser == true) {    
        if(timeLastCreatedLaser + 100 < System.currentTimeMillis()) {
            timeLastCreatedLaser = System.currentTimeMillis();
            boolean createdNewLaser = false;

            for(int i = 0; i < this.amountOfVisibleLasers; i++) {
                if(createdNewLaser == false) {
                    if(holderLaser[i].isDisposed()) {
                        this.generateNewLaser(i,x,y);
                        createdNewLaser = true;

                    }
                }
            }
        }
    }

    // Update all the other Lasers
    for(int i = 0; i < this.amountOfVisibleLasers; i++) {
        if(holderLaser[i].isDisposed() == false) {
            holderLaser[i].update();
        }

    }

}

private void generateNewLaser(int i, float x, float y) {
    holderLaser[i].setY(y);
    holderLaser[i].setX(x);
}
公共类激光兵{
私人可看见激光器;
私人语境;
私人长时间激光器;
私人激光器;
公共激光兵(上下文,整数激光兵){
this.context=上下文;
holderLaser=新激光器[numlaser];
这个。amountOfVisibleLasers=numLasers;
对于(int i=0;i

谢谢!

我敢肯定这是你的问题:

holderLaser[0] = new Laser(context, -10, -10);
您只能在阵列的第一个位置创建一个
新激光器
。如果您尝试访问第二个激光器,则会出现
空指针异常

应该是这样的

holderLaser[i] = new Laser(context, -10, -10);

我很确定这是你的问题:

holderLaser[0] = new Laser(context, -10, -10);
您只能在阵列的第一个位置创建一个
新激光器
。如果您尝试访问第二个激光器,则会出现
空指针异常

应该是这样的

holderLaser[i] = new Laser(context, -10, -10);

你应该查看LogCat以了解其崩溃的原因。你能找到并发布堆栈跟踪吗?如果我的答案有帮助并解决了问题,请单击旁边的勾号接受。你应该查看LogCat以了解其崩溃的原因。你能找到并发布堆栈跟踪吗?如果我的答案有帮助并解决了问题,请接受通过单击它旁边的勾号,我可以从代码中看到的另一件事是,如果holderLaser[I]还没有被实例化。如果你给出崩溃的原因,这会容易得多。你能编辑你的问题以包含它崩溃的地方的LogCat输出吗。这会有很大帮助。我从你的代码中看到的唯一一件事是,如果holderLaser[I]的话,你的generateNewLaser()方法可能会崩溃还没有被实例化。如果你给出它崩溃的原因会容易得多。你能编辑你的问题以包括它崩溃的地方的LogCat输出吗。这会有很大帮助。