Skip to content

Commit d791778

Browse files
committed
Added destroy argument to removeKey and cleared plugin reference.
1 parent fd4f456 commit d791778

1 file changed

Lines changed: 20 additions & 2 deletions

File tree

src/input/keyboard/KeyboardPlugin.js

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -497,7 +497,7 @@ var KeyboardPlugin = new Class({
497497

498498
if (!keys[key])
499499
{
500-
keys[key] = new Key(key);
500+
keys[key] = new Key(this, key);
501501

502502
if (enableCapture)
503503
{
@@ -519,19 +519,25 @@ var KeyboardPlugin = new Class({
519519
* @since 3.10.0
520520
*
521521
* @param {(Phaser.Input.Keyboard.Key|string|integer)} key - Either a Key object, a string, such as `A` or `SPACE`, or a key code value.
522+
* @param {boolean} [destroy=false] - Call `Key.destroy` on the removed Key object?
522523
*
523524
* @return {Phaser.Input.Keyboard.KeyboardPlugin} This KeyboardPlugin object.
524525
*/
525-
removeKey: function (key)
526+
removeKey: function (key, destroy)
526527
{
528+
if (destroy === undefined) { destroy = false; }
529+
527530
var keys = this.keys;
531+
var ref;
528532

529533
if (key instanceof Key)
530534
{
531535
var idx = keys.indexOf(key);
532536

533537
if (idx > -1)
534538
{
539+
ref = this.keys[idx];
540+
535541
this.keys[idx] = undefined;
536542
}
537543
}
@@ -542,9 +548,21 @@ var KeyboardPlugin = new Class({
542548

543549
if (keys[key])
544550
{
551+
ref = keys[key];
552+
545553
keys[key] = undefined;
546554
}
547555

556+
if (ref)
557+
{
558+
ref.plugin = null;
559+
560+
if (destroy)
561+
{
562+
ref.destroy();
563+
}
564+
}
565+
548566
return this;
549567
},
550568

0 commit comments

Comments
 (0)