调试器忽略以前的函数调用

时间:2017-02-04 07:26:18

标签: javascript debugging animation canvas javascript-debugger

我有这种弹跳/碰撞球动画,目前我正在调试碰撞检测。更确切地说,我试图阻止球在碰撞过程中交叉。

我想在球碰撞时停止动画,我可以这样做,但如果我还想在停止执行之前绘制球的碰撞,我需要先画它们。

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();
    }
};

但这不起作用。在绘制碰撞球之前停止执行。

enter image description here

我遇到了Bart's answer并使用了他的建议,称为一个不存在的函数(导致ReferenceError并停止执行),而不是使用debugger并且它有效。在停止执行之前绘制球。

enter image description here

为什么debugger无效?我错过了什么?

0 个答案:

没有答案
相关问题