0

このゲームでは、特定の座標で複数のレーザーを生成しようとしていますが、何らかの理由で、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);
}

ありがとう!

4

1 に答える 1

3

これがあなたの問題だと確信しています:

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

new Laser配列の最初の位置にのみ作成します。2 番目のものにアクセスしようとすると、null pointer exception.

それは次のようなものでなければなりません

holderLaser[i] = new Laser(context, -10, -10);
于 2012-05-22T06:23:28.507 に答える