我无法得到我的车数,以便跟踪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;
}
}
}
答案 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 :考虑下面的评论,您可以尝试两件事。
将return语句放在for循环之外。像这样
if (counts > 5) { this.alive = true; counts++; alert("the count is" + counts); } } } return counts; }
或者,您可以将“计数”声明为全局变量,并在注释中增加函数中的“计数”。并返回它。在这种情况下,for循环没有多大意义。你也可以删除它。试试这个并告诉我们。