var Class = require('../../utils/Class'); var TouchManager = new Class({ initialize: function TouchManager(inputManager){ this.manager = inputManager; this.capture = true ; this.enabled = false ; this.target; inputManager.events.once('boot', this.boot, this); } , boot: function (){ var config = this.manager.config; this.enabled = config.inputTouch; _AN_Write_target('target', this, false , config.inputTouchEventTarget); this.capture = config.inputTouchCapture; if (!(_AN_Read_target('target', this))) { _AN_Write_target('target', this, false , this.manager.game.canvas); } if (this.enabled) { this.startListeners(); } } , onTouchStart: function (event){ if (event.defaultPrevented || !this.enabled) { return ; } this.manager.queueTouchStart(event); if (this.capture) { event.preventDefault(); } } , onTouchMove: function (event){ if (event.defaultPrevented || !this.enabled) { return ; } this.manager.queueTouchMove(event); if (this.capture) { event.preventDefault(); } } , onTouchEnd: function (event){ if (event.defaultPrevented || !this.enabled) { return ; } this.manager.queueTouchEnd(event); if (this.capture) { event.preventDefault(); } } , startListeners: function (){ var target = _AN_Read_target('target', this); var passive = { passive: true } ; var nonPassive = { passive: false } ; if (this.capture) { target.addEventListener('touchstart', this.onTouchStart.bind(this), nonPassive); target.addEventListener('touchmove', this.onTouchMove.bind(this), nonPassive); target.addEventListener('touchend', this.onTouchEnd.bind(this), nonPassive); } else { target.addEventListener('touchstart', this.onTouchStart.bind(this), passive); target.addEventListener('touchmove', this.onTouchMove.bind(this), passive); target.addEventListener('touchend', this.onTouchEnd.bind(this), passive); } } , stopListeners: function (){ var target = _AN_Read_target('target', this); target.removeEventListener('touchstart', this.onTouchStart); target.removeEventListener('touchmove', this.onTouchMove); target.removeEventListener('touchend', this.onTouchEnd); } , destroy: function (){ this.stopListeners(); _AN_Write_target('target', this, false , null ); this.manager = null ; } } ); module.exports = TouchManager;