我有这种弹跳/碰撞球动画,目前我正在调试碰撞检测。更确切地说,我试图阻止球在碰撞过程中交叉。
我想在球碰撞时停止动画,我可以这样做,但如果我还想在停止执行之前绘制球的碰撞,我需要先画它们。
firstBall.move();
secondBall.move();
Ball.detectCollisions(balls); // execution stops here before the balls are drawn
firstBall.draw();
secondBall.draw();
所以,我在碰撞函数中绘制它们。在函数结束时,我绘制球,然后使用debugger
停止执行。
Ball.detectCollisions = function () {
var debug = false;
balls.forEach(function(ball) {
ball.detectWallCollision();
});
for (var i = 0; i < balls.length; i++) {
for (var j = i + 1; j < balls.length; j++) {
if (balls[i].collidingWith(balls[j])) {
// balls[i].resoveCollision(balls[j]);
balls[i].xray = true;
balls[j].xray = true;
debug = true;
}
}
}
if (debug) {
balls.forEach(function(ball) {
ball.draw();
});
debugger;
// haltGodDammit();
}
};
但这不起作用。在绘制碰撞球之前停止执行。
我遇到了Bart's answer并使用了他的建议,称为一个不存在的函数(导致ReferenceError并停止执行),而不是使用debugger
并且它有效。在停止执行之前绘制球。
为什么debugger
无效?我错过了什么?