我不能让我的var计数正确

时间:2013-03-08 04:01:56

标签: javascript

我无法得到我的车数,以便跟踪if语句中的计数,任何人都可以帮助我

 Laser.prototype.update = function () {
    //.3
    this.rot += .3
    this.pos.add(this.dir.clone().mult(5));
    this.alive = !(this.pos.x > cw || this.pos.x < 0 || this.pos.y > ch || this.pos.y < 0);
    var counts = 0;
    for (var i = 0; i < asteroids.length; i++) {
        var astPos = asteroids[i].pos.clone();
        astPos.sub(this.pos); //3 impact area
        if (asteroids[i].onscreen && astPos.len() < asteroids[i].sizes[asteroids[i].level] + 10) {
            asteroids[i].hit(this.dir);
            if (counts < 5) {
                this.alive = false;
                counts++;
                //alert("the count is" + counts);
            }
            if (counts > 5) {
                this.alive = true;
                counts++;
                alert("the count is" + counts);
            }
            return counts;
        }
    }
}

1 个答案:

答案 0 :(得分:3)

当计数== 5时,您可能没有考虑这种情况,因此当计数达到5时,它不执行计数++ AT ALL。您可以将if条件的代码更改为

 if (counts<5){

            this.alive = false;
            counts++;
            //alert("the count is" + counts);
 }
 else{

             this.alive = true;
             counts++;
              alert("the count is" + counts);

 }

或类似的东西......当计数== 5时考虑这种情况。

编辑:也将return语句放在for循环之外。然后尝试

EDIT2 :也将if语句更改为

if (asteroids[i].onscreen && (astPos.len() < (asteroids[i].sizes[asteroids[i].level] + 10))) {

赋予其更好的可读性

EDIT3 :考虑下面的评论,您可以尝试两件事。

  1. 将return语句放在for循环之外。像这样

    if (counts > 5) {
                        this.alive = true;
                        counts++;
                        alert("the count is" + counts);
                    }
                }
            }
           return counts;
        }

  2. 或者,您可以将“计数”声明为全局变量,并在注释中增加函数中的“计数”。并返回它。在这种情况下,for循环没有多大意义。你也可以删除它。试试这个并告诉我们。