Best way to write (javascript)

Perhaps a lack of understanding of javascript here:

engine.keyboard = {};   // keyboard object

engine.keyboard.key = {
_pressed: {},

UP: 38,
DOWN: 40,
LEFT: 37,
RIGHT: 39,

isDown: function(keyCode)
{
    return this._pressed[keyCode];
},

onKeyDown: function(event)
{
    this._pressed[event.keyCode] = true;
},

onKeyUp: function(event)
{
    delete this._pressed[event.keyCode];
}

}

engine.keyboard.addListeners = function()
{
window.addEventListener('keydown', engine.keyboard.key.onKeyDown, false);
window.addEventListener('keyup', engine.keyboard.key.onKeyUp, false);
}

When I call,, engine.keyboard.key.isDown(38)I get an this._pressedundefined error message .

Perhaps there is a better way to define all this? I am working on a very simple game, but just experimenting with different ways of cracking it. So at the moment I have engine, engine.keyboard, engine.cameraand engine.mapthat's all there are little bits. I used the same engine.EXAMPLE = {}at the beginning of each of them. Perhaps this is ineffective?

Greetings.

+3
source share
2 answers

, . , engine.keyboard.key.

, this , , . this engine.keyboard.key,

engine.keyboard.key.onKeyDown()

, :

window.addEventListener('keydown', function(event) {
    engine.keyboard.key.onKeyDown(event);
}, false);

window.addEventListener('keyup', function(event) {
    engine.keyboard.key.onKeyUp(event);
}, false);

, addEventListener IE8. attachEvent.

qurirksmode.org.


:

, :

engine.keyboard = {};  
engine.keyboard.key = (function() {
    var _pressed = {};

    var key = {
        UP: 38,
        DOWN: 40,
        LEFT: 37,
        RIGHT: 39,

        isDown: function(keyCode)  {
            return _pressed[keyCode];
        },

        onKeyDown: function(event) {
            _pressed[event.keyCode] = true;
        },

        onKeyUp: function(event) {
            delete _pressed[event.keyCode];
        }
    }
    return key;
}());

engine.keyboard.key.onKeyDown, this. _pressed , .

, , .

+3

. , -.

-1

All Articles