zippy-game-engine
Version:
A lightweight game engine for web games
47 lines • 1.88 kB
JavaScript
export class DefaultTouchEventSystem {
touchStartCallbacks = new Set();
touchMoveCallbacks = new Set();
touchEndCallbacks = new Set();
registeredElements = new Set();
registerElement(element) {
if (this.registeredElements.has(element))
return;
element.addEventListener("touchstart", this.handleTouchStart.bind(this), { passive: false });
element.addEventListener("touchmove", this.handleTouchMove.bind(this), {
passive: false,
});
element.addEventListener("touchend", this.handleTouchEnd.bind(this), {
passive: false,
});
element.addEventListener("touchcancel", this.handleTouchEnd.bind(this), { passive: false });
this.registeredElements.add(element);
}
unregisterElement(element) {
if (!this.registeredElements.has(element))
return;
element.removeEventListener("touchstart", this.handleTouchStart.bind(this));
element.removeEventListener("touchmove", this.handleTouchMove.bind(this));
element.removeEventListener("touchend", this.handleTouchEnd.bind(this));
element.removeEventListener("touchcancel", this.handleTouchEnd.bind(this));
this.registeredElements.delete(element);
}
onTouchStart(callback) {
this.touchStartCallbacks.add(callback);
}
onTouchMove(callback) {
this.touchMoveCallbacks.add(callback);
}
onTouchEnd(callback) {
this.touchEndCallbacks.add(callback);
}
handleTouchStart(event) {
this.touchStartCallbacks.forEach((callback) => callback(event));
}
handleTouchMove(event) {
this.touchMoveCallbacks.forEach((callback) => callback(event));
}
handleTouchEnd(event) {
this.touchEndCallbacks.forEach((callback) => callback(event));
}
}
//# sourceMappingURL=touch-system.js.map