touch_manager.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import pygame
  2. import logging
  3. logger = logging.getLogger(__name__)
  4. class TouchManager():
  5. click = 1
  6. swipe = 2
  7. up = 0
  8. down = 1
  9. left = 2
  10. right = 3
  11. def __init__(self,size):
  12. self.down_pos = (0, 0)
  13. self.up_pos = (0, 0)
  14. self.screen_size = size
  15. self.max_move_margin = self.screen_size[1] / 6
  16. self.min_swipe_move = self.screen_size[1] / 3
  17. def event(self, event):
  18. if event.type == pygame.MOUSEBUTTONUP:
  19. return self.mouse_up(event)
  20. elif event.type == pygame.MOUSEBUTTONDOWN:
  21. self.mouse_down(event)
  22. return None
  23. def mouse_down(self, event):
  24. self.down_pos = event.pos
  25. def mouse_up(self,event):
  26. self.up_pos = event.pos
  27. if abs(self.down_pos[0] - self.up_pos[0]) < self.max_move_margin:
  28. if abs(self.down_pos[1] - self.up_pos[1]) < self.max_move_margin:
  29. return TouchEvent(TouchManager.click, self.down_pos, self.up_pos, None)
  30. elif abs(self.down_pos[1] - self.up_pos[1]) > self.min_swipe_move:
  31. return TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, True)
  32. elif self.down_pos[1] - self.up_pos[1] < self.max_move_margin:
  33. logger.error("hemen nago")
  34. logger.error( abs(self.down_pos[1] - self.up_pos[1]))
  35. if abs(self.down_pos[0] - self.up_pos[0]) > self.min_swipe_move:
  36. logger.error("kaixo")
  37. return TouchEvent(TouchManager.swipe, self.down_pos, self.up_pos, False)
  38. class TouchEvent():
  39. def __init__(self, event_type, down_pos, current_pos, vertical):
  40. self.type = event_type
  41. self.down_pos = down_pos
  42. self.current_pos = current_pos
  43. if event_type is TouchManager.swipe:
  44. if vertical:
  45. if self.down_pos[1] < self.current_pos[1]:
  46. self.direction = TouchManager.down
  47. else:
  48. self.direction = TouchManager.up
  49. else:
  50. if self.down_pos[0] < self.current_pos[0]:
  51. self.direction = TouchManager.right
  52. else:
  53. self.direction = TouchManager.left