2014-12-01 18 views
-2

我有一個jQuery遊戲,如果你按下鍵盤上的右鍵,它會加載一個特定的圖像,如果你按下鍵盤上的左鍵,它會加載另一個圖像。我的問題是,所有這些都在不斷重複的時間間隔內發生。一旦程序發現我的右鍵不再按下,它將自動繪製第二張圖像。我想要它執行以下操作: - 如果按向右箭頭,它將繪製Image1並保持該狀態,直到按左鍵 -if按左箭頭,我想要繪製Image2並保留該狀態,直到我按下右鍵如何定義要發生的事情並保持該狀態?

如果我在一個while循環中這樣做,我的網頁將崩潰,因爲它將停留在那個while循環中,並且下面的代碼將不會執行。

這是可行的,但只要我釋放正確的鍵,rightDown將是假的,當程序再次找到if語句時,它將繪製我的Image2。 (間隔爲真快)

if(rightDown)drawImage1(); 
else drawImage2(); 

如果我用這個

if(rightDown)drawImage1(); 
else if(leftDown) drawImage2(); 

和我不t按左右鍵無圖像將被繪製。

rightDown和leftDown

function onKeyDown(evt) { 
    if (evt.keyCode == 39) rightDown = true; 
    else if (evt.keyCode == 37) leftDown = true; 
    else if (evt.keyCode == 38) upKeyDown = true; 
    else if(evt.keyCode == 40) downKeyDown = true; 
} 

,當他們不點擊

function onKeyUp(evt) { 
    if (evt.keyCode == 39) rightDown = false; 
    else if (evt.keyCode == 37) leftDown = false; 
    else if (evt.keyCode == 38) upKeyDown = false; 
    else if (evt.keyCode == 40) downKeyDown = false; 
} 

的$(document).keydown(onkeydown事件)的一部分; $(document).keyup(onKeyUp);

+2

向我們展示更多您的代碼...相關部分。你如何獲得'rightDown'? – 2014-12-01 21:44:32

+0

我更新了代碼 – Bogdan 2014-12-01 21:52:59

+1

側邊欄 - 查看https://developer.mozilla.org/en-US/docs/Web/API/window.requestAnimationFrame以緩解您的性能問題。 – 2014-12-01 21:57:38

回答

0

比方說,你有一個函數來繪製你的默認圖像,名爲drawDefault();使用此代碼:

window.onload = drawDefault; 

,使得在窗口的加載,這將繪製默認的圖片(也可作爲window.onload = drawImage[1,2]();(其中[...]表示選擇)

如果你有。已定義的.onload方法window,那麼你可以簡單地擴展您的.onload功能:

window.onload = function(){ 
    // ... code ... 
    drawDefault(); 
} 

或者,用更有趣的方式:

if(!window.onload){ 
    window.onload = drawDefault; 
} else { 
    var on = window.onload; 
    window.onload = function(){ 
     on(); 
     drawDefault(); 
    } 
} 

與此相結合,用你的代碼:

if(rightDown)drawImage1(); 
else if(leftDown) drawImage2(); 

(就個人而言,我會用{...}附上ifelse ifelse聲明,因爲它更容易閱讀(和它是如何努力按兩個額外的鍵或這樣的?)。

結果將是,如果我解釋這兩個你的問題,你的代碼(什麼有呢,無論如何)正確,會發生什麼是:

  1. 默認的圖像將顯示
  2. rightDown上,將顯示右側圖像,並且,
  3. leftDown上,將顯示左側圖像。

希望它有幫助!