@animech-public/playcanvas
Version:
PlayCanvas WebGL game engine
2 lines (1 loc) • 1.31 kB
JavaScript
import{EventHandler as e}from"../../core/event-handler.js";import{TouchEvent as t}from"./touch-event.js";class n extends e{constructor(e){super(),this._element=null,this._startHandler=this._handleTouchStart.bind(this),this._endHandler=this._handleTouchEnd.bind(this),this._moveHandler=this._handleTouchMove.bind(this),this._cancelHandler=this._handleTouchCancel.bind(this),this.attach(e)}attach(e){this._element&&this.detach(),this._element=e,this._element.addEventListener("touchstart",this._startHandler,!1),this._element.addEventListener("touchend",this._endHandler,!1),this._element.addEventListener("touchmove",this._moveHandler,!1),this._element.addEventListener("touchcancel",this._cancelHandler,!1)}detach(){this._element&&(this._element.removeEventListener("touchstart",this._startHandler,!1),this._element.removeEventListener("touchend",this._endHandler,!1),this._element.removeEventListener("touchmove",this._moveHandler,!1),this._element.removeEventListener("touchcancel",this._cancelHandler,!1)),this._element=null}_handleTouchStart(e){this.fire("touchstart",new t(this,e))}_handleTouchEnd(e){this.fire("touchend",new t(this,e))}_handleTouchMove(e){e.preventDefault(),this.fire("touchmove",new t(this,e))}_handleTouchCancel(e){this.fire("touchcancel",new t(this,e))}}export{n as TouchDevice};