UIScrollViewEventSync.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. cc.Class({
  2. extends: cc.Component,
  3. properties: {
  4. },
  5. onLoad () {
  6. let scrollView = this.node.getComponent(cc.ScrollView);
  7. if (scrollView == null) {
  8. return;
  9. }
  10. let parentScrollView = this.getComponentInParent(cc.ScrollView);
  11. if (parentScrollView == null) {
  12. return;
  13. }
  14. this.parentScrollView = parentScrollView;
  15. this.oldOnTouchBegan = scrollView._onTouchBegan.bind(scrollView);
  16. this.oldOnTouchMoved = scrollView._onTouchMoved.bind(scrollView);
  17. this.oldOnTouchEnded = scrollView._onTouchEnded.bind(scrollView);
  18. scrollView._onTouchBegan = this.onTouchBegan.bind(this);
  19. scrollView._onTouchMoved = this.onTouchMoved.bind(this);
  20. scrollView._onTouchEnded = this.onTouchEnded.bind(this);
  21. },
  22. onTouchBegan(event, captureListeners) {
  23. this.oldOnTouchBegan(event, captureListeners);
  24. this.parentScrollView._onTouchBegan(event, captureListeners);
  25. },
  26. onTouchMoved(event, captureListeners) {
  27. this.oldOnTouchMoved(event, captureListeners);
  28. this.parentScrollView._onTouchMoved(event, captureListeners);
  29. },
  30. onTouchEnded(event, captureListeners) {
  31. this.oldOnTouchEnded(event, captureListeners);
  32. this.parentScrollView._onTouchEnded(event, captureListeners);
  33. },
  34. getComponentInParent(component) {
  35. let parent = this.node.parent;
  36. let result = null;
  37. while(parent != null) {
  38. let scrollView = parent.getComponent(component);
  39. if (scrollView != null) {
  40. result = scrollView;
  41. break;
  42. }
  43. parent = parent.parent;
  44. }
  45. return result;
  46. },
  47. });