私はユーザーの入力を受け入れるゲームに取り組んでいます。そうするために、ユーザーが上記のキーを押したときにチェックするイベントリスナーを追加します。私はそれを次のように設定しました:eventListenerはkeyCodeを読み取ることができません
function gameStart(){
//Generates four random numbers on board
for(gameStart_i = 0; gameStart_i < 4; gameStart_i++){
generateNumber();
}
document.getElementById("start_button").innerHTML = "Reset Game";
document.getElementById("start_button").setAttribute('onclick', 'reset()');
document.getElementById("start_button").id = 'reset_button';
var board = document.getElementById("game_background");
console.log("1");
board.addEventListener("keydown", inputListen(), false);
console.log("1.1");
}
function inputListen(e){
console.log("2");
var code = e.keyCode;
switch(code){
case 37:
alert("left");
break;
case 38:
alert("up");
break;
case 39:
alert("right");
break;
case 40:
alert("down");
break;
}
}
これはチュートリアルでの表示と同じようです。しかし、いくつかのチュートリアルは、次のようになります何かをaddEventListenerを行を変更します。私は私のコンソールに見たときに私のために動作するようには思えないしかし
board.addEventListener("keydown", inputListen, false); //removes the() after the function
。
私は私のコードを実行すると、私のコンソールは私に次のエラーを与える:
1
2
Uncaught TypeError: Cannot read property 'keyCode' of undefined
at inputListen (script.js:86)
at gameStart (script.js:16)
at HTMLButtonElement.onclick (2048Game.html:114)
は、私は私の関数にパラメータを渡すことはありませんので、それはだと思うが、オンラインチュートリアルのどれもが自分のaddEventListenerでparaementsを渡しませんステートメント。
は、これを行うための適切な方法は、inputListen
後()
を削除するには確かにある、 アレックス
あなたが本当にファイルを保存し、 ')('削除した後、Webページをリフレッシュしたことがありますか?ログ "2"は "1.1"の前には表示されません。 – kennytm
私はそれを削除すると、すべて正常に動作しますが、矢印キーを押しても警告が表示されません。 – alexp2603