fix double event issue
This commit is contained in:
parent
fda5b5658f
commit
4dc27bc5b0
@ -22,27 +22,26 @@ export class Gamelib {
|
|||||||
this.mouseX = null;
|
this.mouseX = null;
|
||||||
this.mouseY = null;
|
this.mouseY = null;
|
||||||
this.spriteCache = new Map();
|
this.spriteCache = new Map();
|
||||||
|
this.eventAbortController = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
document.body.addEventListener("keydown", this.keydownListener.bind(this));
|
this.eventAbortController = new AbortController();
|
||||||
document.body.addEventListener("keyup", this.keyupListener.bind(this));
|
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("mousemove", this.mousemoveListener.bind(this), { signal });
|
||||||
this.canvas.addEventListener("mousedown", this.mousedownListener.bind(this));
|
this.canvas.addEventListener("mousedown", this.mousedownListener.bind(this), { signal });
|
||||||
this.canvas.addEventListener("mouseup", this.mouseupListener.bind(this));
|
this.canvas.addEventListener("mouseup", this.mouseupListener.bind(this), { signal });
|
||||||
this.canvas.addEventListener("contextmenu", this.contextMenuListener.bind(this));
|
this.canvas.addEventListener("contextmenu", this.contextMenuListener.bind(this), {
|
||||||
|
signal,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy() {
|
destroy() {
|
||||||
document.body.removeEventListener("keydown", this.keydownListener.bind(this));
|
this.eventAbortController.abort();
|
||||||
document.body.removeEventListener("keyup", this.keyupListener.bind(this));
|
this.eventAbortController = null;
|
||||||
|
|
||||||
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.spriteCache.clear();
|
this.spriteCache.clear();
|
||||||
|
|
||||||
clearInterval(this.loopInterval);
|
clearInterval(this.loopInterval);
|
||||||
@ -150,7 +149,6 @@ export class Gamelib {
|
|||||||
|
|
||||||
drawSprite(x, y, sprite) {
|
drawSprite(x, y, sprite) {
|
||||||
const cx = this.cx;
|
const cx = this.cx;
|
||||||
console.log(sprite);
|
|
||||||
|
|
||||||
cx.drawImage(sprite, x, y);
|
cx.drawImage(sprite, x, y);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user