UNPKG

zippy-game-engine

Version:

A lightweight game engine for web games

47 lines 1.88 kB
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