mui.gestures.flick.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /**
  2. * mui gesture flick[left|right|up|down]
  3. * @param {type} $
  4. * @param {type} name
  5. * @returns {undefined}
  6. */
  7. (function($, name) {
  8. var flickStartTime = 0;
  9. var handle = function(event, touch) {
  10. var session = $.gestures.session;
  11. var options = this.options;
  12. var now = $.now();
  13. switch (event.type) {
  14. case $.EVENT_MOVE:
  15. if (now - flickStartTime > 300) {
  16. flickStartTime = now;
  17. session.flickStart = touch.center;
  18. }
  19. break;
  20. case $.EVENT_END:
  21. case $.EVENT_CANCEL:
  22. touch.flick = false;
  23. if (session.flickStart && options.flickMaxTime > (now - flickStartTime) && touch.distance > options.flickMinDistince) {
  24. touch.flick = true;
  25. touch.flickTime = now - flickStartTime;
  26. touch.flickDistanceX = touch.center.x - session.flickStart.x;
  27. touch.flickDistanceY = touch.center.y - session.flickStart.y;
  28. $.trigger(session.target, name, touch);
  29. $.trigger(session.target, name + touch.direction, touch);
  30. }
  31. break;
  32. }
  33. };
  34. /**
  35. * mui gesture flick
  36. */
  37. $.addGesture({
  38. name: name,
  39. index: 5,
  40. handle: handle,
  41. options: {
  42. flickMaxTime: 200,
  43. flickMinDistince: 10
  44. }
  45. });
  46. })(mui, 'flick');