javascript - 切换到一个有 2 个变量的函数
javascript - switch in a function with 2 variables
我尝试制作游戏,但在下面的代码中,我定义了一个带有 for 循环的函数,其中我放置了一个 switch 语句。现在我看到 console.log() 一切正常,但 switch 语句不起作用,即使 compX 和 compY 都高于 2,他没有 运行 这种情况下的代码-开关的声明。我已经用 console.log() 测试了它,我在那个案例语句中询问了 'rux' 和 'ruy',但控制台中什么也没有出现。那么有人知道我做错了什么吗?也许有人举例说明它是如何工作的?
谢谢大家的每一个微小的回答!
function updatePosition() {
for (var pc = policeNum; pc > 0; pc--) {
policeRef.child(pc).once('value', function (snapshot) {
var oldData = snapshot.val();
//KI:
var compX = newX - oldData.X;
var compY = newY - oldData.Y;
console.log('We found X:', compX);
console.log('We found Y:', compY);
switch (compX, compY) {
case compX < -2 && compY < -2: //links und oben
var lox = oldData.X - pixelWidth;
var loy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
X: lox,
Y: loy
});
break;
case compX > 2 && compY < -2: //rechts und oben
var rox = oldData.X + pixelWidth;
var roy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
X: rox,
Y: roy
});
break;
case compX < -2 && compY > 2: //links und unten
var lux = oldData.X - pixelWidth;
var luy = oldData.Y + pixelHeight;
policeRef.child(pc).update({
X: lux,
Y: luy
});
break;
case compX > 2 && compY > 2: //rechts und unten
var rux = oldData.X + pixelWidth;
var ruy = oldData.Y + pixelHeight;
console.log('We found rux:', rux);
console.log('We found ruy:', ruy);
policeRef.child(pc).update({
X: rux,
Y: ruy
});
break;
case compX > -2 && compX < 2 && compY > 2: //unten
var uy = oldData.Y + pixelHeight;
console.log('We found uy:', uy);
policeRef.child(pc).update({
Y: uy
});
break;
case compX > -2 && compX < 2 && compY < -2: //oben
var oy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
Y: oy
});
break;
case compY > -2 && compY < 2 && compX > 2: //rechts
var rx = oldData.X + pixelWidth;
policeRef.child(pc).update({
X: rx
});
break;
case compY > -2 && compY < 2 && compX < 2: //links
var lx = oldData.X - pixelWidth;
policeRef.child(pc).update({
X: lx
});
break;
}
context.clearRect(oldData.Y, oldData.X, pixelHeight, pixelWidth)
});
updateDraw();
}
}
您正试图将 switch
当作 if-else
语句来使用。您不能在开关中使用多个变量,也不能执行除 ==
.
以外的任何比较
switch
的语法是:
switch(expression) {
case expected_value: // i.e, expression == expected_value
...
break;
case another_expected_value:
...
break;
}
您应该更改代码以使用 if-else
,例如:
if (compX < -2 && compY < -2) {
...
} else if (compX > 2 && compY <-2) {
...
} else {
...
我尝试制作游戏,但在下面的代码中,我定义了一个带有 for 循环的函数,其中我放置了一个 switch 语句。现在我看到 console.log() 一切正常,但 switch 语句不起作用,即使 compX 和 compY 都高于 2,他没有 运行 这种情况下的代码-开关的声明。我已经用 console.log() 测试了它,我在那个案例语句中询问了 'rux' 和 'ruy',但控制台中什么也没有出现。那么有人知道我做错了什么吗?也许有人举例说明它是如何工作的? 谢谢大家的每一个微小的回答!
function updatePosition() {
for (var pc = policeNum; pc > 0; pc--) {
policeRef.child(pc).once('value', function (snapshot) {
var oldData = snapshot.val();
//KI:
var compX = newX - oldData.X;
var compY = newY - oldData.Y;
console.log('We found X:', compX);
console.log('We found Y:', compY);
switch (compX, compY) {
case compX < -2 && compY < -2: //links und oben
var lox = oldData.X - pixelWidth;
var loy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
X: lox,
Y: loy
});
break;
case compX > 2 && compY < -2: //rechts und oben
var rox = oldData.X + pixelWidth;
var roy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
X: rox,
Y: roy
});
break;
case compX < -2 && compY > 2: //links und unten
var lux = oldData.X - pixelWidth;
var luy = oldData.Y + pixelHeight;
policeRef.child(pc).update({
X: lux,
Y: luy
});
break;
case compX > 2 && compY > 2: //rechts und unten
var rux = oldData.X + pixelWidth;
var ruy = oldData.Y + pixelHeight;
console.log('We found rux:', rux);
console.log('We found ruy:', ruy);
policeRef.child(pc).update({
X: rux,
Y: ruy
});
break;
case compX > -2 && compX < 2 && compY > 2: //unten
var uy = oldData.Y + pixelHeight;
console.log('We found uy:', uy);
policeRef.child(pc).update({
Y: uy
});
break;
case compX > -2 && compX < 2 && compY < -2: //oben
var oy = oldData.Y - pixelHeight;
policeRef.child(pc).update({
Y: oy
});
break;
case compY > -2 && compY < 2 && compX > 2: //rechts
var rx = oldData.X + pixelWidth;
policeRef.child(pc).update({
X: rx
});
break;
case compY > -2 && compY < 2 && compX < 2: //links
var lx = oldData.X - pixelWidth;
policeRef.child(pc).update({
X: lx
});
break;
}
context.clearRect(oldData.Y, oldData.X, pixelHeight, pixelWidth)
});
updateDraw();
}
}
您正试图将 switch
当作 if-else
语句来使用。您不能在开关中使用多个变量,也不能执行除 ==
.
switch
的语法是:
switch(expression) {
case expected_value: // i.e, expression == expected_value
...
break;
case another_expected_value:
...
break;
}
您应该更改代码以使用 if-else
,例如:
if (compX < -2 && compY < -2) {
...
} else if (compX > 2 && compY <-2) {
...
} else {
...