2015-10-18 59 views
-1

当我运行下面的代码时,出于某种原因它执行,就好像else始终为真,但是当我拿走else语句时,if语句正常工作,因此表明if语句能够工作,我想,但是我无法设置Player.movi​​ng = true,而没有其他的东西。Javascript其他总是触发

if (Player.x > j * 25 - 15 && 
    Player.x < j * 25 + 10 && 
    Player.y > i * 25 && 
    Player.y < i * 25 + 25 && 
    Player.direction === 1 
) { 
    Player.moving = false; 
} 
else if (Player.x > j * 25 && 
     Player.x < j * 25 + 25 && 
     Player.y > i * 25 - 15 && 
     Player.y < i * 25 + 10 && 
     Player.direction === 2 
) { 
    Player.moving = false; 
} 
else if (Player.x > j * 25 && 
     Player.x < j * 25 + 40 && 
     Player.y > i * 25 && 
     Player.y < i * 25 + 25 && 
     Player.direction === 3 
) { 
    Player.moving = false; 
} 
else if (Player.x > j * 25 && 
     Player.x < j * 25 + 25 && 
     Player.y > i * 25 && 
     Player.y < i * 25 + 50 && 
     Player.direction === 4 
) { 
    Player.moving = false; 
} 
else { 
    Player.moving = true; 
} 

其中i和j是该对象的索引的地图瓦片,使得tilemap的看起来像这样:var tilemap的= [“‘’”];

例如,当

if (Player.x > j * 25 && 
     Player.x < j * 25 + 40 && 
     Player.y > i * 25 && 
     Player.y < i * 25 + 25 && 
     Player.direction === 3 
) { 
    Player.moving = false; 
} 

是唯一的代码本。当[i] [j]中的对象如预期的那样位于其左侧时,玩家将停止向左移动。然而,随着else语句的出现,它只是继续移动,Player.movi​​ng保持真实。 感谢您的帮助!

+1

我认为没有其他条件都满足,因此在else语句 –

+2

结束请在问题本身足够的代码复制此问题。我们无法评估您的条件。外部网站链接腐烂,我们不应该离开现场,看看为什么你的代码不工作。问题应该是自我包含的 – charlietfl

回答

1

您的if子句未正确定义,x不能同时大于和小于一个值。你也是。

你可能想是这样的:

If ((Player.x > I || Player.x < J) && 
    (Player.y > M || Player.y < N) && 
     Player.direction === 1 
) {...} ...