从数组中删除对象

时间:2013-11-20 09:42:20

标签: actionscript-3 flash actionscript

帮助在检测到冲突后删除数组中的对象.Tcriptcript 3.这是问题所在的代码 跟踪函数根据跟踪函数输出,但最后一个除外。 看:我是这样的业余爱好者。这是我的第一个项目,它需要完成

trace("about to test bullet collisions");
for (var i:int = 0; i<bullets.length; i++) {
trace("bullet");trace(i);
for(var e2:int =0; e2<enemy.length; e2++){
    trace("enemy"); trace(e2);
    trace("bulletx"); trace(bullets[i].x);
   if (enemies[e2].hitTestObject(bullets[i].x, bullets[i].y, true)){
      trace("bullet collided with an enemy");
      removeChild(level.enemy);
      enemies.splice(e2, 1);

2 个答案:

答案 0 :(得分:0)

如果你要从一个循环INSIDE中删除一个数组中的一个对象,那么从最高索引到最低索引迭代数组是值得的:

var arrayLength:int = _array.length;
for (var loop:int = arrayLength-1;loop>=0;loop--) {
    if (<conditional test to remove object here>) {
        _array.splice(loop, 1);
    }
}

答案 1 :(得分:0)

当您遍历数组并移除此数组中影响长度的对象时,这是常见问题。只需在删除对象后将迭代索引减一:

if (enemies[e2].hitTestObject(bullets[i].x, bullets[i].y, true)){
   removeChild(level.enemy);
   enemies.splice(e2, 1);
   e2--
}