Skip to content

Commit af212a1

Browse files
authored
Merge pull request phaserjs#3279 from squaresun/master
Fix KeyboardManager keydown events keeps firing
2 parents c74ad8d + af7d619 commit af212a1

2 files changed

Lines changed: 15 additions & 8 deletions

File tree

src/input/keyboard/KeyboardManager.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,13 +362,13 @@ var KeyboardManager = new Class({
362362
var event = queue[i];
363363
var code = event.keyCode;
364364

365-
// Will emit a keyboard or keyup event
366-
this.emit(event.type, event);
367-
368365
if (event.type === 'keydown')
369366
{
370-
if (KeyMap[code])
367+
if (KeyMap[code] && (keys[code] === undefined || keys[code].isDown === false))
371368
{
369+
// Will emit a keyboard or keyup event
370+
this.emit(event.type, event);
371+
372372
this.emit('keydown_' + KeyMap[code], event);
373373
}
374374

@@ -379,6 +379,9 @@ var KeyboardManager = new Class({
379379
}
380380
else
381381
{
382+
// Will emit a keyboard or keyup event
383+
this.emit(event.type, event);
384+
382385
this.emit('keyup_' + KeyMap[code], event);
383386

384387
if (keys[code])

src/input/keyboard/keys/ProcessKeyDown.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,14 @@ var ProcessKeyDown = function (key, event)
3434
key.shiftKey = event.shiftKey;
3535
key.location = event.location;
3636

37-
key.isDown = true;
38-
key.isUp = false;
39-
key.timeDown = event.timeStamp;
40-
key.duration = 0;
37+
if (key.isDown === false)
38+
{
39+
key.isDown = true;
40+
key.isUp = false;
41+
key.timeDown = event.timeStamp;
42+
key.duration = 0;
43+
}
44+
4145
key.repeats++;
4246

4347
key._justDown = true;

0 commit comments

Comments
 (0)