javascript - 切换具有2个变量的函数

标签 javascript canvas switch-statement web-scripting

我尝试制作一个游戏,但在下面的代码中我定义了一个带有 for 循环的函数,其中我放置了一个 switch 语句。现在我看到 console.log() 一切正常,但 switch 语句不起作用,即使 compX 和 compY 都高于 2,他也不会运行 switch 的 case 语句中的代码。我已经使用 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 {
  ...

关于javascript - 切换具有2个变量的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37510176/

相关文章:

javascript - 停止光标,直到 javascript 中的文本区域中的文本发生更改

javascript - JS滑动和淡出教程

javascript - 沿着 Canvas 上的一条线放置文本标签

c# - 反转 switch case 语句

c++ - 计算器程序无法编译

c - switch 语句中的声明

javascript - 第二次点击 jQuery

javascript - 重构 jQuery 以使用 $(this) 并从另一个元素添加/删除类

user-interface - Canvas 上的 Unity 粒子效果

php - JavaScript Canvas API 生成的图像在保存时无法查看?