fix double event issue

This commit is contained in:
Theis Pieter Hollebeek 2025-10-15 21:37:27 +02:00
parent fda5b5658f
commit 4dc27bc5b0

View File

@ -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);
}