Phaser.MSPointer = function (game){ this.game = game; this.input = game.input; this.callbackContext = this.game; this.pointerDownCallback = null ; this.pointerMoveCallback = null ; this.pointerUpCallback = null ; this.capture = true ; this.button = -1; this.event = null ; this.enabled = true ; this._onMSPointerDown = null ; this._onMSPointerMove = null ; this._onMSPointerUp = null ; this._onMSPointerUpGlobal = null ; this._onMSPointerOut = null ; this._onMSPointerOver = null ; } ; Phaser.MSPointer.prototype = { start: function (){ if (this._onMSPointerDown !== null ) { return ; } var _this = this; if (this.game.device.mspointer) { this._onMSPointerDown = function (event){ return _this.onPointerDown(event); } ; this._onMSPointerMove = function (event){ return _this.onPointerMove(event); } ; this._onMSPointerUp = function (event){ return _this.onPointerUp(event); } ; this._onMSPointerUpGlobal = function (event){ return _this.onPointerUpGlobal(event); } ; this._onMSPointerOut = function (event){ return _this.onPointerOut(event); } ; this._onMSPointerOver = function (event){ return _this.onPointerOver(event); } ; var canvas = this.game.canvas; canvas.addEventListener('MSPointerDown', this._onMSPointerDown, false ); canvas.addEventListener('MSPointerMove', this._onMSPointerMove, false ); canvas.addEventListener('MSPointerUp', this._onMSPointerUp, false ); canvas.addEventListener('pointerdown', this._onMSPointerDown, false ); canvas.addEventListener('pointermove', this._onMSPointerMove, false ); canvas.addEventListener('pointerup', this._onMSPointerUp, false ); canvas.style["-ms-content-zooming"] = 'none'; canvas.style["-ms-touch-action"] = 'none'; if (!this.game.device.cocoonJS) { window.addEventListener('MSPointerUp', this._onMSPointerUpGlobal, true ); canvas.addEventListener('MSPointerOver', this._onMSPointerOver, true ); canvas.addEventListener('MSPointerOut', this._onMSPointerOut, true ); window.addEventListener('pointerup', this._onMSPointerUpGlobal, true ); canvas.addEventListener('pointerover', this._onMSPointerOver, true ); canvas.addEventListener('pointerout', this._onMSPointerOut, true ); } } } , onPointerDown: function (event){ this.event = event; if (this.capture) { event.preventDefault(); } if (this.pointerDownCallback) { this.pointerDownCallback.call(this.callbackContext, event); } if (!this.input.enabled || !this.enabled) { return ; } event.identifier = event.pointerId; if (event.pointerType === 'mouse' || event.pointerType === 4) { this.input.mousePointer.start(event); } else { this.input.startPointer(event); } } , onPointerMove: function (event){ this.event = event; if (this.capture) { event.preventDefault(); } if (this.pointerMoveCallback) { this.pointerMoveCallback.call(this.callbackContext, event); } if (!this.input.enabled || !this.enabled) { return ; } event.identifier = event.pointerId; if (event.pointerType === 'mouse' || event.pointerType === 4) { this.input.mousePointer.move(event); } else { this.input.updatePointer(event); } } , onPointerUp: function (event){ this.event = event; if (this.capture) { event.preventDefault(); } if (this.pointerUpCallback) { this.pointerUpCallback.call(this.callbackContext, event); } if (!this.input.enabled || !this.enabled) { return ; } event.identifier = event.pointerId; if (event.pointerType === 'mouse' || event.pointerType === 4) { this.input.mousePointer.stop(event); } else { this.input.stopPointer(event); } } , onPointerUpGlobal: function (event){ if ((event.pointerType === 'mouse' || event.pointerType === 4) && !this.input.mousePointer.withinGame) { this.onPointerUp(event); } else { var pointer = this.input.getPointerFromIdentifier(event.identifier); if (pointer && pointer.withinGame) { this.onPointerUp(event); } } } , onPointerOut: function (event){ this.event = event; if (this.capture) { event.preventDefault(); } if (event.pointerType === 'mouse' || event.pointerType === 4) { this.input.mousePointer.withinGame = false ; } else { var pointer = this.input.getPointerFromIdentifier(event.identifier); if (pointer) { pointer.withinGame = false ; } } if (this.input.mouse.mouseOutCallback) { this.input.mouse.mouseOutCallback.call(this.input.mouse.callbackContext, event); } if (!this.input.enabled || !this.enabled) { return ; } if (this.input.mouse.stopOnGameOut) { event.identifier = 0; if (pointer) { pointer.stop(event); } else { this.input.mousePointer.stop(event); } } } , onPointerOver: function (event){ this.event = event; if (this.capture) { event.preventDefault(); } if (event.pointerType === 'mouse' || event.pointerType === 4) { this.input.mousePointer.withinGame = true ; } else { var pointer = this.input.getPointerFromIdentifier(event.identifier); if (pointer) { pointer.withinGame = true ; } } if (this.input.mouse.mouseOverCallback) { this.input.mouse.mouseOverCallback.call(this.input.mouse.callbackContext, event); } } , stop: function (){ var canvas = this.game.canvas; canvas.removeEventListener('MSPointerDown', this._onMSPointerDown, false ); canvas.removeEventListener('MSPointerMove', this._onMSPointerMove, false ); canvas.removeEventListener('MSPointerUp', this._onMSPointerUp, false ); canvas.removeEventListener('pointerdown', this._onMSPointerDown, false ); canvas.removeEventListener('pointermove', this._onMSPointerMove, false ); canvas.removeEventListener('pointerup', this._onMSPointerUp, false ); window.removeEventListener('MSPointerUp', this._onMSPointerUpGlobal, true ); canvas.removeEventListener('MSPointerOver', this._onMSPointerOver, true ); canvas.removeEventListener('MSPointerOut', this._onMSPointerOut, true ); window.removeEventListener('pointerup', this._onMSPointerUpGlobal, true ); canvas.removeEventListener('pointerover', this._onMSPointerOver, true ); canvas.removeEventListener('pointerout', this._onMSPointerOut, true ); } } ; Phaser.MSPointer.prototype.constructor = Phaser.MSPointer;