2013-09-25 62 views
0

請幫忙!我已經花了一個星期的時間來完成這個遊戲,這是我一直堅持了幾天的最後一次。我知道那裏有些技術人員可能會看一眼,然後輕輕一碰。但是我對JavaScript並不是非常熟練,因此需要一些幫助。使用Javascript的導航鍵

$(document).keydown(function(e){ 
    // left arrow 
    if (e.keyCode == 37 && currentCell > 0) { 
     currentCell--; 
     ChangeCurrentCell(); 
     return false; 
    } 
    // up arrow 
    if (e.keyCode == 38 && currentRow > 0) { 
     currentRow--; 
     ChangeCurrentCell(); 
     return false; 
    } 
    // right arrow 
    if (e.keyCode == 39 && currentCell < MAX_CELL) { 
     currentCell++; 
     ChangeCurrentCell(); 
     return false; 
    } 
    //down arrow 
    if (e.keyCode == 40 && currentRow < MAX_ROW) { 
     currentRow++; 
     ChangeCurrentCell(); 
     return false; 
    } 
    // enter key 
    if (e.keyCode == 13) { 

    } 
    }); 


function ChangeCurrentCell() 
{ 

    document.getElementById(Boxes[currentRow + currentCell]).focus(); 
    SimulateMouseOver(document.getElementById(Boxes[currentRow + currentCell])); 

} 


// function will trigger event of selecting current focus. 
function selectElement() 
{ 

} 

$(document).ready(function(){ 

    loadDivs() 

// will give initial focus to top left element paving way for key navigation 
    ChangeCurrentCell(); 
    // above gives first element in Boxes the focus when loading. 

div元素將不會集中,儘管得到它並調用焦點方法,我試圖觸發mousehover元素沒有運氣。請幫助我,儘管我已經在緊張的日程安排下完成了這個需要工作職位的遊戲,但我放下了我的碩士論文。我已經完成了整個遊戲邏輯,並且一切運作良好,如果我發送代碼的話它肯定會被丟棄,因爲它不符合關鍵的導航要求......我絕望,我甚至會付錢,如果我需要-frustrated學生

+0

檢查事件'e.which'的箭頭'37,38,39,40'。 – elclanrs

回答

1

this

這是我的測試解決方案,也許是相同的......也許可以幫助你:)如果是這樣,請用它作爲提示,不要複製全部我的代碼:d

問候,

L.

+0

謝謝隊友......但我昨天已經通過了......我不期待一個電話通知...祝你好運!並再次感謝您的幫助 – cryptocyborg

0

您可以綁定到document.keydown事件以捕獲擊鍵。然後你可以使用event.which(由jQuery規範化)來確定哪個鍵被按下。

$(document).on("keydown", function (event) { 
    if (event.which === 37) { 
     //code for left arrow 
    } else if (event.which === 38) { 
     //code for up arrow 
    } else if (event.which === 39) { 
     //code for right arrow 
    } else if (event.which === 40) { 
     //code for down arrow 
    } 
}); 

UPDATE

我只注意到你沒有標記與jQuery你的問題。要使用本機JS,您必須更改綁定到document.keydown事件的方式以及如何確定按下的按鍵(不同的瀏覽器實現將信息存儲在event對象的不同索引下)。

+0

請任何人!請幫助我 – cryptocyborg

0

,使其更方便()沒有必要:

`var LEFT = 37, UP = 38, RIGHT = 39, DOWN = 40, SPACE = 32;` 

然後綁定到的keydown,按鍵不捕獲箭頭鍵 ,做這樣的事情:

$(document).bind("keydown", function (e){ 
    var which = e.which; 
    var navigationKeyWasPressed = which !== undefined && which >= 39 && which <= 40; 
    //do nothing if no significant key was pressed 
    if (!navigationKeyWasPressed) { 
     return; 
    } 
    if ($(".selectedWithKey").length === 1){ 
     switch (which) { 
      case LEFT: 
       //... 
       break; 
      case UP: 
       //... 
       break; 
      case RIGHT: 
       //... 
       break; 
      case DOWN: 
       //... 
       break; 
      case SPACE: 
       //turn card 
       break; 
      default: //non arrow pressed 
      //... 
     } 
    } else { 
     // if no card is selected, select one to start arrow navigation 
     $(".sponsor:first").addClass("selectedWithKey") 
    } 
});