Так что я пытаюсь сделать hitTestObject для пулемета, но я не знаю, почему переменная, представляющая изменение bullets.length, изменяется.TypeError: Ошибка # 2007: параметр hitTestObject должен быть не нулевым. Почему
поэтому ошибка происходит от этой функции
function doShips() {
trace("bcount :" + bcount)
trace("_bulletsArray length:" + _bulletsArray.length)
for (var i:int = shipArray.length - 1; i >= 0; i--) {
shipArray[i].moveDown() //what the code in the Ship and Ship2 class does -> only: this.y += 3
for (var bcount= _bulletsArray.length-1; bcount >= 0; bcount--) {
//if the bullet is touching the ship
while (shipArray[i].hitTestObject(_bulletsArray[bcount])) {
//if we get here it means there`s is a collision
removeChild(_bulletsArray[bcount]);
_bulletsArray.splice(bcount,1);
removeChild(shipArray[i]);
shipArray.splice(i,1);
}
}
}
}
до этого у меня есть также функцию отростков, который стреляет пулями и помещает их в _bulletsArray.
, когда следы Настала показывает: , когда я не стрелять пулями он дает мне эту
_bulletsArray length: 0
bcount: 0
и когда я стрелять это дает мне это:
bcount: 0
_bulletsArray length: 1
или
bcount: 0
_bulletsArray length: 2
так почему не меняется счет, когда параметр _bulletsArray изменяется, когда я говорю это, чтобы сделать это в for (var bcount= _bulletsArray.length-1; bcount >= 0; bcount--) {
еще хуже - когда я тип данные в «bcount к числу„bcount: Number“это дает мне NaN
Кроме того, общее правило: если вы собираетесь перебирать массив и потенциально удалять некоторые из элементов массива, вы всегда должны перебирать массив позади: 'for (var i: int = length - 1; i> = 0; i -) ' –