0

助けてください!私はこのゲームを完了するのに 1 週​​間を費やしました。私はそこにいる技術者がおそらく一瞥して何かを所定の位置にフリックすることを知っています. しかし、私は 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 要素は、それを取得して focus メソッドを呼び出してもフォーカスしません。要素でマウスオーバーをトリガーしようとしましたが、うまくいきませんでした。仕事の要件であるこのゲームを行うためにすでにタイトなスケジュールになっているにもかかわらず、私は修士論文を脇に置きました。私はゲームロジック全体をすべて実行しましたが、すべてうまく機能します。コードをそのまま送信すると、キーナビゲーション要件を満たしていないため、間違いなく破棄されます...私は必死で、必要に応じて支払います-欲求不満の学生

4

3 に答える 3

1

これを見

それはテストのための私の解決策です、多分同じ...多分あなたを助けることができます:)もしそうなら、それをヒントとして使用し、私のコードをすべてコピーしないでください:D

よろしく、

L.

于 2013-09-30T14:06:51.920 に答える
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
    }
});

アップデート

質問に jQuery のタグを付けていないことに気付きました。ネイティブ JS を使用するには、document.keydownイベントにバインドする方法と、押されたキーを判別する方法を変更する必要があります (ブラウザーの実装が異なると、オブジェクトの異なるインデックスに情報が保存されeventます)。

于 2013-09-25T22:27:02.087 に答える