2015-10-18 95 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 
) {...} ...