mui.gestures.drag.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /**
  2. * mui gesture drag[start|left|right|up|down|end]
  3. * @param {type} $
  4. * @param {type} name
  5. * @returns {undefined}
  6. */
  7. (function($, name) {
  8. var handle = function(event, touch) {
  9. var session = $.gestures.session;
  10. switch (event.type) {
  11. case $.EVENT_START:
  12. break;
  13. case $.EVENT_MOVE:
  14. if (!touch.direction || !session.target) {
  15. return;
  16. }
  17. //修正direction,可在session期间自行锁定拖拽方向,方便开发scroll类不同方向拖拽插件嵌套
  18. if (session.lockDirection && session.startDirection) {
  19. if (session.startDirection && session.startDirection !== touch.direction) {
  20. if (session.startDirection === 'up' || session.startDirection === 'down') {
  21. touch.direction = touch.deltaY < 0 ? 'up' : 'down';
  22. } else {
  23. touch.direction = touch.deltaX < 0 ? 'left' : 'right';
  24. }
  25. }
  26. }
  27. if (!session.drag) {
  28. session.drag = true;
  29. $.trigger(session.target, name + 'start', touch);
  30. }
  31. $.trigger(session.target, name, touch);
  32. $.trigger(session.target, name + touch.direction, touch);
  33. break;
  34. case $.EVENT_END:
  35. case $.EVENT_CANCEL:
  36. if (session.drag && touch.isFinal) {
  37. $.trigger(session.target, name + 'end', touch);
  38. }
  39. break;
  40. }
  41. };
  42. /**
  43. * mui gesture drag
  44. */
  45. $.addGesture({
  46. name: name,
  47. index: 20,
  48. handle: handle,
  49. options: {
  50. fingers: 1
  51. }
  52. });
  53. })(mui, 'drag');