这段代码似乎是通过将1添加到玩家1中循环的。直到我在第二个if语句中添加的分数是===为止。有人知道为什么吗?
pointScored: {
startNextSet: function(Scorer) {
if (gameController.bananasTaken < 3 && Scorer === "player1") {
console.log(gameController.player1.score);
gameController.player1.score += 1;
if (gameController.player1.score === 10 &&
gameController.bananasTaken === 0 &&
gameController.player1.bananaCount === 0) {
console.log(gameController.player1.score);
gameController.updatePlayerStats(gameController.Banana1, 20, gameController.canvas.height
- 20 - gameController.Banana1.height, gameController.player1, "left");
console.log("player 1's first point");
}我目前正在学习如何使用调试器,但我想把这个留在这里,看看是否有人知道原因。谢谢。
发布于 2013-07-30 08:30:53
您的值有可能被计算为字符串。===运算符不执行任何类型转换,这就是为什么它更快的原因。
考虑将您的评估更改为使用==。在another question中也出现了同样的问题。
我已经对您的代码进行了一些重构&使用了我前面建议的==符号。请试着运行它,并告诉我它是否有效。
pointScored:{
startNextSet: function(Scorer) {
gc=gameController; //to save thy fingers from typing ache
if (gc.bananasTaken > 2 || Scorer !== "player1")
return;
console.log(gc.player1.score); // this logs 6 times from 0 to 5
gc.player1.score += 1;
if (gc.player1.score == 5 && gc.bananasTaken == 0) {
alert(gc.player1.score); //*******!
if(gc.player1.bananaCount == 0) {
gc.updatePlayerStats(gc.Banana1, 20, gc.canvas.height - 20 - gc.Banana1.height, gc.player1, "left");
console.log("player 1's first point");
}
}
}}
发布于 2013-07-30 08:40:14
在我查看您的函数时,这个逻辑似乎需要在gameController对象中。
https://stackoverflow.com/questions/17941815
复制相似问题