2012-06-29 3 views
1

Так что у меня возникла проблема с добавлением в ArrayList или связанный список (попробовали оба, но каждый сбой был одинаковым). Я работаю над учебником AndEngine (Jimvaders, который отлично работал), но при адаптации его к моему собственному проекту он работает неправильно. В основном, когда я стреляю в пулю, он добавляется в список пуль, но в моем проекте, пытаясь коснуться ArrayList или LinkedList, находящегося в GameScene, из класса playerChar приводит к сбою всей игры. Я еще ничего не сделал с этим списком, так что просто добавление моей PlayerBullet в список, который вызывает проблему, насколько я могу судить.Игра Сбой при добавлении в массив или компоновщик Список

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

} 

Любое понимание будет полезным. Спасибо

+0

Вы правильно инициализировали массив bulletList? У вас есть 'public ArrayList bulletList ;, но вы никогда не создадите новый массив. Например, вам может потребоваться сказать 'public ArrayList bulletList = new ArrayList ();' –

+0

Сбой при ошибке сбрасывается? Если да, можете ли вы показать нам ошибку? – adchilds

+0

Да, я забыл инициализировать его. Исправлена ​​проблема. Спасибо за помощь. – Gjallerhorn

ответ

1

Я предполагаю, что у вас есть исключение NullPointerException, хотя это поможет, если вы сказали нам. Эта линия:

scene.bulletList.add(b); 

требует, чтобы и scene и scene.bulletList являются ненулевыми. Мы можем сказать, что scene не является нулевым, но я подозреваю, что scene.bulletList null - где вы думаете вы его инициализируете?

(Кстати, я настоятельно советую вам избегать общих переменных, я бы, вероятно, положить addBullet метод в GameScene. - и, вероятно, сделать тип ныне частный bulletList переменная List<PlayerBullet> ... только указать ArrayList<E> при инициализации переменная.)

+0

Спасибо. Это была проблема. Я забыл его инициализировать. Это было время, так как я использовал Java, набирая переменные, иногда заставляет меня думать, что я уже установил, что это должно быть. – Gjallerhorn

Смежные вопросы