Sự kiện mousemove hoạt động và gọi trênMouseMove mỗi khi tôi di chuyển trên canvas. Mặc dù, các sự kiện keydown và keyup không bao giờ hoạt động. Tôi nhấp vào canvas và nhấn một số phím, nhưng không có sự kiện nào được kích hoạt. Có ai biết tại sao các sự kiện không hoạt động? Cảm ơn vì bất cứ lời khuyên nào! Tôi đang theo dõi khóa học html5 trên udacity nếu có ai đó tò mò về mã nguồn xuất phát từ đâu.Trình nghe sự kiện 'keydown' của Javascript không hoạt động
InputEngineClass = Class.extend({
keyState: new Array(),
setup: function() {
document.getElementById("gameCanvas").addEventListener('mousemove', gInputEngine.onMouseMove);
document.getElementById("gameCanvas").addEventListener('keydown', gInputEngine.onKeyDown);
document.getElementById("gameCanvas").addEventListener('keyup', gInputEngine.onKeyUp);
},
onMouseMove: function (event) {
console.log("Called onMouseMove");
var posx = event.clientX;
var posy = event.clientY;
},
onKeyDown: function (event) {
console.log("KEY DOWN!!!");
keyState[event.keyID] = true;
gInputEngine.update();
},
onKeyUp: function (event) {
console.log("KEY UP!!!");
keyState[event.keyID] = true;
},
update: function() {
KeyW = 87;
if(gInputEngine.keyState[KeyW]) console.log("FORWARD!!!");
}
});
gInputEngine = new InputEngineClass();
gì loại đối tượng là 'gameCanvas'? Nếu nó không bao giờ lấy tiêu điểm bàn phím (hoặc có trẻ em lấy tiêu điểm), thì nó sẽ không nhận được sự kiện bàn phím. Một đối tượng trước tiên phải lấy tiêu điểm bàn phím trước khi các sự kiện bàn phím được gửi đến nó. – jfriend00
Nó là một canvas tạo như thế này: 'body = document.getElementById ("cơ thể"); ' ' canvas = document.createElement ("vải");' 'canvas.setAttribute ("id", " trò chơiCanvas ");' 'canvas.width = window.innerWidth;' 'canvas.height = window.innerHeight;' 'body.appendChild (canvas);' – user1668814
Cảm ơn bạn @ jfriend00 Tôi googled tập trung vào bàn phím và xác định rằng tôi cần thiết để thêm ảnh này vào canvas của tôi: 'canvas.setAttribute (" tabindex ", 0);' – user1668814