Vì vậy, tôi đang viết một trò chơi và tôi có một mô-đun trả về các khóa hiện đang được nhấn qua jQuery. Không có vấn đề ở đó. Sự cố xảy ra khi tôi cố gắng truy cập các phím được nhấn:Đối tượng hiển thị các thuộc tính nhưng truy cập chúng trả về không xác định
var Keys = require('./lib/keys')
Player.prototype.update = function() {
Keys(function (err, keydown) {
console.log(keydown, keydown['w']);
/* // To move a player up, for example:
if (keydown['w']) {
this.y += this.speed;
}
*/
});
};
Và bảng điều khiển cho biết phím nào được nhấn nhưng cố gắng truy cập vào một phím cho tôi không xác định thay vì đúng.
Object undefined
s: true
w: true
x: true
__proto__: Object
Có ai có bất kỳ suy nghĩ nào không?
Cập nhật: mô-đun chính
var $ = require('./jquery')
var Keys = function (callback) {
var keydown = {};
function keyName(event) {
return String.fromCharCode(event.which).toLowerCase();
}
$(document).bind('keydown', function (event) {
keydown[keyName(event)] = true;
return false;
});
$(document).bind('keyup', function (event) {
return false;
});
callback(null, keydown);
}
module.exports = Keys;
/* ** * ** * ** * ** * * CẬP NHẬT * ** * ** * ** * ** * */
Đây là sửa chữa cuối cùng:
./lib/keys.js var $ = require ('./ jquery')
var Keys = function() {
this.keydown = {};
var keyName = function (event) {
return String.fromCharCode(event.which).toLowerCase();
}
var self = this;
$(document).bind('keydown', function (event) {
self.keydown[keyName(event)] = true;
return false;
});
$(document).bind('keyup', function (event) {
self.keydown[keyName(event)] = false;
return false;
});
};
Keys.prototype.getKeys = function (callback) {
callback(null, this.keydown);
}
module.exports = new Keys;
./lib/player.js var Keys = require ('./keys')
var Player = function (game, keys) {
// stuff
}
Player.prototype.update = function() {
var self = this;
Keys.getKeys(function(err, keys) {
if (keys['w']) {
self.y -= self.speed;
}
if (keys['a']) {
self.x -= self.speed;
}
if (keys['s']) {
self.y += self.speed;
}
if (keys['d']) {
self.x += self.speed;
}
});
Chức năng 'Keys' được xác định như thế nào? – zerkms
Bạn sẽ tìm thấy nhiều vấn đề liên quan ở đây trên SO. Tôi luôn luôn [đã viết một lời giải thích ngắn về vấn đề này] (http://felix-kling.de/blog/2011/08/18/inspecting-variables-in-javascript-consoles/) một thời gian trước đây. –
@Felix Kling: bây giờ tôi biết nơi để chỉ mọi người - bởi vì tôi đã trả lời những câu hỏi như vậy ở đây có lẽ ít nhất 5 lần. – zerkms