DisplayNodeInteractive.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using UnityEngine.EventSystems;
  6. namespace CommonUnity3D.UGUI
  7. {
  8. public interface IInteractiveComponent
  9. {
  10. DisplayNode Binding { get; }
  11. UnityEngine.UI.Selectable AsSelectable { get; }
  12. bool IsPressDown { get; }
  13. PointerEventData LastPointerDown { get; }
  14. Action<PointerEventData> event_PointerDown { get; set; }
  15. Action<PointerEventData> event_PointerUp { get; set; }
  16. Action<PointerEventData> event_PointerClick { get; set; }
  17. }
  18. public class DisplayNodeInteractive : UnityEngine.UI.Selectable, IPointerClickHandler, IInteractiveComponent
  19. {
  20. private PointerEventData mLastPointerDown;
  21. private DisplayNode mBinding;
  22. public UnityEngine.UI.Selectable AsSelectable { get { return this; } }
  23. public bool IsPressDown { get { return base.IsPressed(); } }
  24. public PointerEventData LastPointerDown { get { return mLastPointerDown; } }
  25. public Action<PointerEventData> event_PointerDown { get; set; }
  26. public Action<PointerEventData> event_PointerUp { get; set; }
  27. public Action<PointerEventData> event_PointerClick { get; set; }
  28. public DisplayNode Binding { get { return mBinding; } }
  29. public DisplayNodeInteractive()
  30. {
  31. //this.transition = UnityEngine.UI.Selectable.Transition.ColorTint;
  32. }
  33. protected override void Awake()
  34. {
  35. this.transition = UnityEngine.UI.Selectable.Transition.None;
  36. this.mBinding = DisplayNode.AsDisplayNode(gameObject);
  37. base.Awake();
  38. }
  39. protected override void OnDestroy()
  40. {
  41. mBinding = null;
  42. mLastPointerDown = null;
  43. event_PointerDown = null;
  44. event_PointerUp = null;
  45. event_PointerClick = null;
  46. base.OnDestroy();
  47. }
  48. public override void OnPointerDown(PointerEventData eventData)
  49. {
  50. this.mLastPointerDown = eventData;
  51. base.OnPointerDown(eventData);
  52. if (IsPressed())
  53. {
  54. if (event_PointerDown != null) event_PointerDown(eventData);
  55. }
  56. }
  57. public override void OnPointerUp(PointerEventData eventData)
  58. {
  59. base.OnPointerUp(eventData);
  60. if (!IsPressed())
  61. {
  62. if (event_PointerUp != null) event_PointerUp(eventData);
  63. }
  64. }
  65. public virtual void OnPointerClick(PointerEventData eventData)
  66. {
  67. if (event_PointerClick != null) event_PointerClick(eventData);
  68. }
  69. }
  70. }