所以我寫了一個遊戲,並且我有一個模塊,它返回當前通過jQuery按下的鍵。那裏沒有問題。問題是當我試圖訪問按下鍵:對象顯示屬性,但訪問它們返回undefined
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;
}
*/
});
};
和控制檯顯示什麼鍵被按下,但試圖訪問一個給了我一個不確定的,而不是真正的。
Object undefined
s: true
w: true
x: true
__proto__: Object
任何人有任何想法?
更新:關鍵模塊
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;
/* ** * ** * ** * ** * * UPDATE * ** * ** * ** * ** * */
這是最後的解決辦法:
./lib/keys.js 變量$ =要求( './的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 變種密鑰=需要('./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;
}
});
如何'Keys'函數的定義? – zerkms
你會在這裏找到許多相關的問題。我以前總是[寫了一個關於這個問題的簡短解釋](http://felix-kling.de/blog/2011/08/18/inspecting-variables-in-javascript-consoles/)。 –
@Felix Kling:現在我知道在哪裏指出人 - 因爲我在這裏回答了這樣的問題,可能至少有5次。 – zerkms