diff --git a/src/gamelib.js b/src/gamelib.js index 27cce11..76a9cbc 100644 --- a/src/gamelib.js +++ b/src/gamelib.js @@ -22,27 +22,26 @@ export class Gamelib { this.mouseX = null; this.mouseY = null; this.spriteCache = new Map(); + this.eventAbortController = null; } init() { - document.body.addEventListener("keydown", this.keydownListener.bind(this)); - document.body.addEventListener("keyup", this.keyupListener.bind(this)); + this.eventAbortController = new AbortController(); + const signal = this.eventAbortController.signal; + document.body.addEventListener("keydown", this.keydownListener.bind(this), { signal }); + document.body.addEventListener("keyup", this.keyupListener.bind(this), { signal }); - this.canvas.addEventListener("mousemove", this.mousemoveListener.bind(this)); - this.canvas.addEventListener("mousedown", this.mousedownListener.bind(this)); - this.canvas.addEventListener("mouseup", this.mouseupListener.bind(this)); - this.canvas.addEventListener("contextmenu", this.contextMenuListener.bind(this)); + this.canvas.addEventListener("mousemove", this.mousemoveListener.bind(this), { signal }); + this.canvas.addEventListener("mousedown", this.mousedownListener.bind(this), { signal }); + this.canvas.addEventListener("mouseup", this.mouseupListener.bind(this), { signal }); + this.canvas.addEventListener("contextmenu", this.contextMenuListener.bind(this), { + signal, + }); } destroy() { - document.body.removeEventListener("keydown", this.keydownListener.bind(this)); - document.body.removeEventListener("keyup", this.keyupListener.bind(this)); - - this.canvas.removeEventListener("mousemove", this.mousemoveListener.bind(this)); - this.canvas.removeEventListener("mousedown", this.mousedownListener.bind(this)); - this.canvas.removeEventListener("mouseup", this.mouseupListener.bind(this)); - this.canvas.removeEventListener("contextmenu", this.contextMenuListener.bind(this)); - + this.eventAbortController.abort(); + this.eventAbortController = null; this.spriteCache.clear(); clearInterval(this.loopInterval); @@ -150,7 +149,6 @@ export class Gamelib { drawSprite(x, y, sprite) { const cx = this.cx; - console.log(sprite); cx.drawImage(sprite, x, y); }