我怎样才能做" if(a> x> b)"?

时间:2016-04-15 16:22:26

标签: javascript if-statement

这可能是一个简单的问题,但我无法让它发挥作用。 我试图进行一次关键交互,当按下时,它会检查相机的位置,并根据它的位置做不同的事情。 这是其中的一部分:

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语句的条件,所以我的代码工作正常,只是没有读取我的相机的位置当格式化为&#34;(a&lt;(camera.position.x)&lt; b)&#34;办法。 我如何打算输入if并执行此类检查?

2 个答案:

答案 0 :(得分:3)

(-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 { }
            }
    ... 

答案 1 :(得分:0)

它应该简单地分成两段布尔逻辑,并结合AND操作。

// -36 < camera.position.x < -25 becomes two Boolean boundary conditions...

if (camera.position.x > -36 && camera.position.x < -25) {
    // do something
}

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