我有很多if语句应该在左键或右键按下时触发。但是当我向左击时,它只是在所有if语句上执行左键按键,即使每个语句都有条件。
var currentBranch = 1;
if ((currentBranch == 1) && (keyPressed[key.left] == true)){
background.image.src = treeStructure[0][0];
currentBranch = 3;
console.log(currentBranch);
} else if ((currentBranch == 1) && (keyPressed[key.right] == true)) {
background.image.src = treeStructure[0][1];
currentBranch = 2;
console.log(currentBranch);
}
if ((currentBranch == 3) && (keyPressed[key.left] == true)){
background.image.src = treeStructure[1][0];
currentBranch = 4;
console.log(currentBranch);
} else if ((currentBranch == 3) && (keyPressed[key.right] == true)) {
background.image.src = treeStructure[1][1];
currentBranch = 9;
console.log("hello");
console.log(currentBranch);
}
if ((currentBranch == 4) && (keyPressed[key.left] == true)){
background.image.src = treeStructure[2][0];
currentBranch = 6;
console.log(currentBranch);
} else if ((currentBranch == 4) && (keyPressed[key.right] == true)) {
background.image.src = treeStructure[2][1];
currentBranch = 5;
对于新的按键,不应该在每个if语句之后将currentBranch变量停止吗?
答案 0 :(得分:2)
如上所述,你的代码实际上是3个单独的if ... else if ... blocks,而不是一组chained if blocks。这意味着他们的真实性"将被单独评估,而不是在评估为真之后爆发。
第一个"如果......" block计算结果为true,然后在该块内部设置变量" currentBranch"到3,这会导致下一个if块评估为true,依此类推。
您需要将代码结构更改为:
if (statement) {
//code
}
else if (statement) {
//code
}
else if (statement) {
//code
}
else if (statement) {
//code
}
else if (statement) {
//code
}
else if (statement) {
//code
}
这样,一旦一个块评估为真,就不会评估较低的块。