Also schreibe ich ein Spiel, und ich habe ein Modul, das die Tasten zurückgibt, die gerade über jQuery gedrückt werden. Keine Probleme dort. Das Problem kommt, wenn ich die Tasten gedrückt zuzugreifen versuchen:Objekt zeigt Eigenschaften, aber Zugriff auf sie gibt undefined zurück
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;
}
*/
});
};
Und die Konsole zeigt, dass, welche Tasten gedrückt werden, sondern versuchen, ein für den Zugriff gibt mir eine undefinierte statt wahr.
Object undefined
s: true
w: true
x: true
__proto__: Object
Wer hat irgendwelche Gedanken?
Update: Keymodul
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 * ** * ** * ** * ** * */
Dies ist die letzte fix:
./lib/keys.js var $ = erfordern ('./ 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 = erfordern ('./Tasten')
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;
}
});
Wie 'Keys' Funktion definiert ist? – zerkms
Sie finden viele verwandte Themen hier auf SO. Ich habe [vor einiger Zeit immer eine kurze Erklärung zu diesem Problem geschrieben] (http://felix-kling.de/blog/2011/08/18/inspecting-variables-in-javascript-consoles/). –
@Felix Kling: jetzt weiß ich wo man Leute hinweist - weil ich solche Fragen hier mindestens 5 mal beantwortet habe. – zerkms