Tided up the Key handler.

This commit is contained in:
Richard Davey 2017-02-21 16:52:40 +00:00
parent 8fd0a7a531
commit fbb591fd94
4 changed files with 32 additions and 10 deletions

View file

@ -1,4 +1,4 @@
var CHECKSUM = {
build: '79e0cfa0-f84f-11e6-aabb-e9b6cbc3e561'
build: '2d175030-f855-11e6-8baa-a7d5f1237a30'
};
module.exports = CHECKSUM;

View file

@ -2,6 +2,8 @@ var EventDispatcher = require('../../events/EventDispatcher');
var Event = require('./events');
var KeyCodes = require('./keys/KeyCodes');
var Key = require('./keys/Key');
var KeyCombo = require('./combo/KeyCombo');
var ProcessKeyCombo = require('./combo/ProcessKeyCombo');
var ProcessKeyDown = require('./keys/ProcessKeyDown');
var ProcessKeyUp = require('./keys/ProcessKeyUp');
@ -31,6 +33,8 @@ var KeyboardManager = function (inputManager)
this.keys = [];
this.combos = [];
// Standard FIFO queue
this.queue = [];
@ -137,14 +141,16 @@ KeyboardManager.prototype = {
* @param {integer} keycode - The {@link Phaser.KeyCode keycode} of the key.
* @return {Phaser.Key} The Key object which you can store locally and reference directly.
*/
addKey: function (keycode, name)
addKey: function (keyCode)
{
if (!this.keys[keycode])
var keys = this.keys;
if (!keys[keyCode])
{
this.keys[keycode] = new Key(this, keycode, name);
keys[keyCode] = new Key(keyCode);
}
return this.keys[keycode];
return keys[keyCode];
},
/**
@ -161,6 +167,15 @@ KeyboardManager.prototype = {
}
},
addKeyCombo: function (keys, config)
{
var combo = KeyCombo(keys, config);
this.combos.push(combo);
return combo;
},
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/KeyboardEvent
// type = 'keydown', 'keyup'
// keyCode = integer
@ -177,6 +192,7 @@ KeyboardManager.prototype = {
var queue = this.queue.splice(0, this.queue.length);
var keys = this.keys;
var singleKey;
// Process the event queue, dispatching all of the events that have stored up
for (var i = 0; i < queue.length; i++)
@ -187,9 +203,11 @@ KeyboardManager.prototype = {
{
this.events.dispatch(new Event.KEY_DOWN_EVENT(event));
if (Event._DOWN[event.keyCode])
singleKey = Event._DOWN[event.keyCode];
if (singleKey)
{
this.events.dispatch(new Event._DOWN[event.keyCode](event));
this.events.dispatch(new singleKey(event));
}
if (keys[event.keyCode])
@ -201,9 +219,11 @@ KeyboardManager.prototype = {
{
this.events.dispatch(new Event.KEY_UP_EVENT(event));
if (Event._UP[event.keyCode])
singleKey = Event._UP[event.keyCode];
if (singleKey)
{
this.events.dispatch(new Event._UP[event.keyCode](event));
this.events.dispatch(new singleKey(event));
}
if (keys[event.keyCode])

View file

@ -7,6 +7,8 @@ module.exports = {
Key: require('./keys/Key'),
KeyCodes: require('./keys/KeyCodes'),
KeyCombo: require('./combo/KeyCombo'),
JustDown: require('./keys/JustDown'),
JustUp: require('./keys/JustUp'),
DownDuration: require('./keys/DownDuration'),

View file

@ -18,7 +18,7 @@ var Key = function (keyCode)
* @property {boolean} preventDefault - Should this Key prevent event propagation?
* @default
*/
this.preventDefault = false;
this.preventDefault = true;
/**
* @property {boolean} enabled - Can this Key be processed?