/** * A base class for gesture recognizers that involve multiple simultaneous contact points * between the screen and the input-device, e.g. 'pinch' and 'rotate' * @abstract * @private */Ext.define('Ext.event.gesture.MultiTouch', { extend: 'Ext.event.gesture.Recognizer', requiredTouchesCount: 2, isTracking: false, isStarted: false, onTouchStart: function(e) { var requiredTouchesCount = this.requiredTouchesCount, touches = e.touches, touchesCount = touches.length; if (touchesCount === requiredTouchesCount) { this.start(e); } else if (touchesCount > requiredTouchesCount) { this.end(e); } }, onTouchEnd: function(e) { this.end(e); }, onTouchCancel: function(e) { this.end(e, true); return false; }, start: function() { if (!this.isTracking) { this.isTracking = true; this.isStarted = false; } }, end: function(e, isCancel) { if (this.isTracking) { this.isTracking = false; if (this.isStarted) { this.isStarted = false; this[isCancel ? 'fireCancel' : 'fireEnd'](e); } } }, reset: function() { this.isTracking = this.isStarted = false; }});