|
|
/**
|
|
|
* mui gesture pinch
|
|
|
* @param {type} $
|
|
|
* @param {type} name
|
|
|
* @returns {undefined}
|
|
|
*/
|
|
|
(function($, name) {
|
|
|
var handle = function(event, touch) {
|
|
|
var options = this.options;
|
|
|
var session = $.gestures.session;
|
|
|
switch (event.type) {
|
|
|
case $.EVENT_START:
|
|
|
break;
|
|
|
case $.EVENT_MOVE:
|
|
|
if ($.options.gestureConfig.pinch) {
|
|
|
if (touch.touches.length < 2) {
|
|
|
return;
|
|
|
}
|
|
|
if (!session.pinch) { //start
|
|
|
session.pinch = true;
|
|
|
$.trigger(session.target, name + 'start', touch);
|
|
|
}
|
|
|
$.trigger(session.target, name, touch);
|
|
|
var scale = touch.scale;
|
|
|
var rotation = touch.rotation;
|
|
|
var lastScale = typeof touch.lastScale === 'undefined' ? 1 : touch.lastScale;
|
|
|
var scaleDiff = 0.000000000001; //防止scale与lastScale相等,不触发事件的情况。
|
|
|
if (scale > lastScale) { //out
|
|
|
lastScale = scale - scaleDiff;
|
|
|
$.trigger(session.target, name + 'out', touch);
|
|
|
} //in
|
|
|
else if (scale < lastScale) {
|
|
|
lastScale = scale + scaleDiff;
|
|
|
$.trigger(session.target, name + 'in', touch);
|
|
|
}
|
|
|
if (Math.abs(rotation) > options.minRotationAngle) {
|
|
|
$.trigger(session.target, 'rotate', touch);
|
|
|
}
|
|
|
}
|
|
|
break;
|
|
|
case $.EVENT_END:
|
|
|
case $.EVENT_CANCEL:
|
|
|
if ($.options.gestureConfig.pinch && session.pinch && touch.touches.length === 2) {
|
|
|
session.pinch = false;
|
|
|
$.trigger(session.target, name + 'end', touch);
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
};
|
|
|
/**
|
|
|
* mui gesture pinch
|
|
|
*/
|
|
|
$.addGesture({
|
|
|
name: name,
|
|
|
index: 10,
|
|
|
handle: handle,
|
|
|
options: {
|
|
|
minRotationAngle: 0
|
|
|
}
|
|
|
});
|
|
|
})(mui, 'pinch'); |