[英]How do I fix an undefined error in my class?
我想為鍵盤輸入制作一個 Javascript 類。 我正在嘗試測試我的課程,但出現未定義的錯誤。
index.html 的內容
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Test Keyboard</title>
<style type="text/css" media="screen">
canvas { border: 1px solid; }
</style>
</head>
<body>
<h1 id ="title">Test Keyboard</h1>
<script src="src/input.js"></script>
</body>
</html>
input.js 的內容
'use strict';
class Keyboard {
constructor() {
this.keysPressed = {}
this.translateKeyCode = {
49: 0x1, // 1
50: 0x2, // 2
51: 0x3, // 3
52: 0x4, // 4
81: 0x5, // Q
87: 0x6, // W
69: 0x7, // E
82: 0x8, // R
65: 0x9, // A
83: 0xA, // S
68: 0xB, // D
70: 0xC, // F
90: 0xD, // Z
88: 0xE, // X
67: 0xF, // C
86: 0x10 // V
}
}
onNextKeyPressed(code) {
//Override this in Fx0A - LD Vx, K
}
isPressed(event) {
return this.keysPressed[this.translateKeyCode[event.keyCode]];
}
isDown(event) {
console.log(`Pressed ${event.keyCode}`)
this.keysPressed[this.translateKeyCode[event.keyCode]] = 1;
this.onNextKeyPressed(event.keyCode);
// We only want onNextKeyPressed to run once
// After a Fx0A opcode
this.onNextKeyPressed = function() {};
}
isUp(event) {
console.log(`Released ${event.keyCode}`)
delete this.keysPressed[this.translateKeyCode[event.keyCode]];
}
}
let keyboard = new Keyboard();
window.addEventListener("keydown", keyboard.isDown);
window.addEventListener("keyup", keyboard.isUp);
預期的結果是代碼運行沒有錯誤。
實際結果是按鍵時這些行出現 Javascript 未定義錯誤。
this.keysPressed[this.translateKeyCode[event.keyCode]] = 1;
this.onNextKeyPressed(event.keyCode);
delete this.keysPressed[this.translateKeyCode[event.keyCode]];
嘗試保留您的綁定,使用 ES6 做一些相當簡單的事情:
window.addEventListener("keydown", (ev) => keyboard.isDown(ev));
window.addEventListener("keyup", (ev) => keyboard.isUp(ev));
對比的老式方法:
window.addEventListener("keydown", function(ev) { keyboard.isDown(ev) });
window.addEventListener("keyup", function(ev) { keyboard.isUp(ev) });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.