Skip to content

Commit f342589

Browse files
committed
added swipe event
1 parent b7dee14 commit f342589

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

hammer.js

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Hammer.JS
3-
* version 0.5.1
3+
* version 0.6
44
* author: Eight Media
55
* https://github.com/EightMedia/hammer.js
66
*/
@@ -13,6 +13,10 @@ function Hammer(element, options, undefined)
1313
prevent_default : false,
1414
css_hacks : true,
1515

16+
swipe : true,
17+
swipe_time : 200, // ms
18+
swipe_min_distance : 20, // pixels
19+
1620
drag : true,
1721
drag_vertical : true,
1822
drag_horizontal : true,
@@ -319,6 +323,48 @@ function Hammer(element, options, undefined)
319323
}
320324
},
321325

326+
// swipe gesture
327+
// fired on touchend
328+
swipe : function(event)
329+
{
330+
if(!_pos.move) {
331+
return;
332+
}
333+
334+
// get the distance we moved
335+
var _distance_x = _pos.move[0].x - _pos.start[0].x;
336+
var _distance_y = _pos.move[0].y - _pos.start[0].y;
337+
_distance = Math.sqrt(_distance_x*_distance_x + _distance_y*_distance_y);
338+
339+
// compare the kind of gesture by time
340+
var now = new Date().getTime();
341+
var touch_time = now - _touch_start_time;
342+
343+
if(options.swipe && (options.swipe_time > touch_time) && (_distance > options.swipe_min_distance)) {
344+
// calculate the angle
345+
_angle = getAngle(_pos.start[0], _pos.move[0]);
346+
_direction = self.getDirectionFromAngle(_angle);
347+
348+
_gesture = 'swipe';
349+
350+
var position = { x: _pos.move[0].x - _offset.left,
351+
y: _pos.move[0].y - _offset.top };
352+
353+
var event_obj = {
354+
originalEvent : event,
355+
position : position,
356+
direction : _direction,
357+
distance : _distance,
358+
distanceX : _distance_x,
359+
distanceY : _distance_y,
360+
angle : _angle
361+
};
362+
363+
// normal slide event
364+
triggerEvent("swipe", event_obj);
365+
}
366+
},
367+
322368

323369
// drag gesture
324370
// fired on mousemove
@@ -539,6 +585,11 @@ function Hammer(element, options, undefined)
539585
_mousedown = false;
540586
_event_end = event;
541587

588+
589+
// swipe gesture
590+
gestures.swipe(event);
591+
592+
542593
// drag gesture
543594
// dragstart is triggered, so dragend is possible
544595
if(_gesture == 'drag') {

jquery.hammer.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* Hammer.JS jQuery plugin
3-
* version 0.2
3+
* version 0.3
44
* author: Eight Media
55
* https://github.com/EightMedia/hammer.js
66
*/
@@ -13,7 +13,7 @@ jQuery.fn.hammer = function(options)
1313
var $el = jQuery(this);
1414
$el.data("hammer", hammer);
1515

16-
var events = ['hold','tap','doubletap','transformstart','transform','transformend','dragstart','drag','dragend','release'];
16+
var events = ['hold','tap','doubletap','transformstart','transform','transformend','dragstart','drag','dragend','swipe','release'];
1717

1818
for(var e=0; e<events.length; e++) {
1919
hammer['on'+ events[e]] = (function(el, eventName) {

0 commit comments

Comments
 (0)