From 7e524dac9c38623e00d3f29b0980f78e24807d12 Mon Sep 17 00:00:00 2001 From: valentinMachado Date: Mon, 23 Aug 2021 16:57:42 +0200 Subject: [PATCH] fix --- src/Components/InputManager.js | 38 +++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/Components/InputManager.js b/src/Components/InputManager.js index 0717d846b..2bcbeb597 100644 --- a/src/Components/InputManager.js +++ b/src/Components/InputManager.js @@ -65,11 +65,17 @@ export class InputManager { */ addKeyInput(key, eventID, cb) { const _this = this; - window.addEventListener(eventID, function (event) { + const listener = function (event) { if (key == event.key && !_this.pause) cb(); - }); + }; + window.addEventListener(eventID, listener); //register to dispose it - this.listeners.push({ element: window, cb: cb, id: eventID }); + this.listeners.push({ + element: window, + cb: cb, //keep it to make easier the remove + id: eventID, + listener: listener, + }); } /** @@ -116,13 +122,21 @@ export class InputManager { */ addMouseInput(element, eventID, cb) { const _this = this; - element.addEventListener(eventID, function (event) { + + const listener = function (event) { if (!_this.pause) { cb(event); } - }); + }; + + element.addEventListener(eventID, listener); //register to dispose it - this.listeners.push({ element: element, cb: cb, id: eventID }); + this.listeners.push({ + element: element, + cb: cb, //keep it to make easier the remove + id: eventID, + listener: listener, + }); } /** @@ -154,6 +168,17 @@ export class InputManager { this.mouseState.startListening(element); } + removeInputListener(listener) { + for (let index = 0; index < this.listeners.length; index++) { + const o = this.listeners[index]; + if (o.cb == listener) { + o.element.removeEventListener(o.id, o.listener); + this.listeners.splice(index, 1); + break; + } + } + } + /** * Remove listeners and reset variables */ @@ -237,7 +262,6 @@ const MOUSE_STATE_EVENTS = { MOUSE_UP: 'mouseup', MOUSE_DOWN: 'mousedown', MOUSE_MOVE: 'mousemove', - MOUSE_WHEEL: 'wheel', }; /**