帮助在检测到冲突后删除数组中的对象.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);
答案 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--
}