我要销毁某个对象,使其通过某个x值。这些对象是称为“球”的移相器组的一部分。在我的更新循环中,我有以下代码行:
balls.forEach(updateBalls, null, true);
Run Code Online (Sandbox Code Playgroud)
这是updateBalls函数:
function updateBalls(ball) {
if (ball.x > 800) {
ball.destroy();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是在循环期间删除对象会弄乱循环,这是我得到的错误:
TypeError:this.children [i]未定义
我试图将每个球推到一个阵列,然后像这样破坏每个球。
function updateBalls(ball) {
if (ball.x > 800) {
ballsToDestroy.push(ball);
}
}
Run Code Online (Sandbox Code Playgroud)
然后在更新循环中:
balls.forEach(updateBalls, null, true);
for (x = 0; x < ballsToDestroy.length; balls++) {
ballsToDestroy[x].destroy();
}
Run Code Online (Sandbox Code Playgroud)
这给了我一些奇怪的错误。
如果我使用ball.kill(),它会起作用,但最终会导致游戏延迟,因为实际上并没有移除球。
我该如何解决?