Touch.addTouchLockCallback has a new argument onEnd which allows the callback to fire either on a touchstart or a touchend event.

This commit is contained in:
photonstorm 2015-09-22 11:46:08 +01:00
parent d86d01bd25
commit 27457c2b0f

View file

@ -28,7 +28,7 @@ Phaser.Touch = function (game) {
this.enabled = true;
/**
* An array of callbacks that will be fired every time a native touch start event is received from the browser.
* An array of callbacks that will be fired every time a native touch start or touch end event is received from the browser.
* This is used internally to handle audio and video unlocking on mobile devices.
* To add a callback to this array please use `Touch.addTouchLockCallback`.
* @property {array} touchLockCallbacks
@ -198,7 +198,7 @@ Phaser.Touch.prototype = {
},
/**
* Adds a callback that is fired when a browser touchstart event is received.
* Adds a callback that is fired when a browser touchstart or touchend event is received.
*
* This is used internally to handle audio and video unlocking on mobile devices.
*
@ -209,10 +209,13 @@ Phaser.Touch.prototype = {
* @method Phaser.Touch#addTouchLockCallback
* @param {function} callback - The callback that will be called when a touchstart event is received.
* @param {object} context - The context in which the callback will be called.
* @param {boolean} [onEnd=false] - Will the callback fire on a touchstart (default) or touchend event?
*/
addTouchLockCallback: function (callback, context) {
addTouchLockCallback: function (callback, context, onEnd) {
this.touchLockCallbacks.push({ callback: callback, context: context });
if (onEnd === undefined) { onEnd = false; }
this.touchLockCallbacks.push({ callback: callback, context: context, onEnd: onEnd });
},
@ -252,7 +255,9 @@ Phaser.Touch.prototype = {
while (i--)
{
if (this.touchLockCallbacks[i].callback.call(this.touchLockCallbacks[i].context, this, event))
var cb = this.touchLockCallbacks[i];
if (!cb.onEnd && cb.callback.call(cb.context, this, event))
{
this.touchLockCallbacks.splice(i, 1);
}
@ -401,6 +406,18 @@ Phaser.Touch.prototype = {
*/
onTouchEnd: function (event) {
var i = this.touchLockCallbacks.length;
while (i--)
{
var cb = this.touchLockCallbacks[i];
if (cb.onEnd && cb.callback.call(cb.context, this, event))
{
this.touchLockCallbacks.splice(i, 1);
}
}
this.event = event;
if (this.touchEndCallback)