我怎么能做这样的事情;如果(a>x>b)“;

How can I do something like "if (a > x > b)"?

本文关键字:gt 如果 怎么能      更新时间:2023-09-26

这可能是一个简单的问题,但我很难让它发挥作用。我正在尝试一个按键交互,当按下时,它会检查相机的位置,并根据相机的位置做不同的事情。这里有一大块:

function onKeyDown (event) {
switch (event.keyCode) {
case 49: /*1*/ 
if (looking){                       
    //P1
    if (-36 < (camera.position.x) < -25) {if (-10 < (camera.position.z) < 10){
    //P1stuff
    looking = false,  text.innerHTML = "Painting1", controls.movementSpeed = 0, controls.rollSpeed = 0
} else{}
} 

在我的实际项目中,还有更多的内容,我已经替换了if语句的条件,所以我的代码运行良好,只是在以"(a<(camera.position.x)<b)"方式格式化时无法读取相机的位置。我该如何输入并执行这种if检查?

(-36 < (camera.position.x) < -25)是错误的,您实际上正在执行以下

var foo = -36 < camera.position.x; // foo will be either true or false;

然后你的第二个比较基本上是做true < -25,这不是你想要完成的。

你需要做的是把你的比较器分成:((-36 < camera.position.x) && (camera.position.x < -25)),就像这样:

function onKeyDown (event) {
    switch (event.keyCode) {
        case 49: /*1*/ 
            if (looking){                       
            //P1
            if (-36 < camera.position.x && camera.position.x < -25) {
                if (-10 < camera.position.z && camera.position.z < 10) {
                    //P1stuff
                    looking = false;  
                    text.innerHTML = "Painting1"; 
                    controls.movementSpeed = 0; 
                    controls.rollSpeed = 0
                 } else { }
            }
    ... 

它应该简单地拆分为两个布尔逻辑,并与AND运算相结合。

// -36 < camera.position.x < -25 becomes two Boolean boundary conditions...
if (camera.position.x > -36 && camera.position.x < -25) {
    // do something
}

相机位置是我们在这里检查的相关属性,因此,在逻辑检查中把它放在第一位是最明智的。