1

そのため、ArrayList または Linked List への追加で問題が発生しています (両方を試しましたが、どちらも同じようにクラッシュします)。AndEngine のチュートリアル (Jimvaders は正常に動作しました) に取り組んでいますが、それを自分のプロジェクトに適応させると、正しく動作しません。基本的に、弾丸を撃つと弾丸のリストに追加されますが、私のプロジェクトでは、playerChar クラスから GameScene にある 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);

}

どんな洞察も役に立ちます。ありがとう

4

1 に答える 1

1

NullPointerException が発生したと思いますが、教えていただければ助かります。この行:

scene.bulletList.add(b);

sceneとの両方scene.bulletListが null でないことが必要です。scenenull ではないことがわかりますが、null であると思われます。scene.bulletListどこで初期化していると思いますか?

(余談ですが、パブリック変数を避けることを強くお勧めします。私はおそらくaddBulletメソッドを- に入れ、おそらくプライベート変数GameSceneの型を作成します... 変数を初期化するときにのみ指定します。)bulletListList<PlayerBullet>ArrayList<E>

于 2012-06-29T16:54:55.593 に答える