From 6af2f7c370ae9bde876ffb92bd5de276a84b364e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=80=9D=E6=B5=B7?= <1464576565@qq.com> Date: Tue, 3 Jun 2025 17:08:27 +0800 Subject: [PATCH] modify --- Runtime/RecyclerView/RecyclerView.cs | 8 ++++++++ Runtime/RecyclerView/Scroller/IScroller.cs | 18 +++++++++++++++--- Runtime/RecyclerView/Scroller/Scroller.cs | 10 +++++++++- 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Runtime/RecyclerView/RecyclerView.cs b/Runtime/RecyclerView/RecyclerView.cs index fcbcc5a..ec247d7 100644 --- a/Runtime/RecyclerView/RecyclerView.cs +++ b/Runtime/RecyclerView/RecyclerView.cs @@ -114,6 +114,7 @@ namespace AlicizaX.UI.RecyclerView private int currentIndex; public Scroller Scroller => _scroller; + public int CurrentIndex { get => currentIndex; @@ -140,6 +141,7 @@ namespace AlicizaX.UI.RecyclerView public Action OnIndexChanged; public Action OnScrollValueChanged; + public Action OnMoveingChanged; private void OnValidate() { @@ -206,6 +208,11 @@ namespace AlicizaX.UI.RecyclerView OnScrollValueChanged?.Invoke(); } + private void OnMoveing() + { + OnMoveingChanged?.Invoke(); + } + private void OnMoveStoped() { if (Snap) @@ -286,6 +293,7 @@ namespace AlicizaX.UI.RecyclerView _scroller.Snap = Snap; _scroller.OnValueChanged.AddListener(OnScrollChanged); _scroller.OnMoveStoped.AddListener(OnMoveStoped); + _scroller.OnMoveing.AddListener(OnMoveing); } } diff --git a/Runtime/RecyclerView/Scroller/IScroller.cs b/Runtime/RecyclerView/Scroller/IScroller.cs index c42a4af..83fa3a1 100644 --- a/Runtime/RecyclerView/Scroller/IScroller.cs +++ b/Runtime/RecyclerView/Scroller/IScroller.cs @@ -9,7 +9,19 @@ namespace AlicizaX.UI.RecyclerView void ScrollTo(float position, bool smooth = false); } - public class ScrollerEvent : UnityEvent { } - public class MoveStopEvent : UnityEvent { } - public class DraggingEvent : UnityEvent { } + public class ScrollerEvent : UnityEvent + { + } + + public class MoveStopEvent : UnityEvent + { + } + + public class DraggingEvent : UnityEvent + { + } + + public class MoveingEvent : UnityEvent + { + } } diff --git a/Runtime/RecyclerView/Scroller/Scroller.cs b/Runtime/RecyclerView/Scroller/Scroller.cs index 5bec036..6d27bc9 100644 --- a/Runtime/RecyclerView/Scroller/Scroller.cs +++ b/Runtime/RecyclerView/Scroller/Scroller.cs @@ -76,11 +76,18 @@ namespace AlicizaX.UI.RecyclerView protected ScrollerEvent scrollerEvent = new(); protected MoveStopEvent moveStopEvent = new(); protected DraggingEvent draggingEvent = new(); + protected MoveingEvent moveingEvent = new(); public float MaxPosition => direction == Direction.Vertical ? Mathf.Max(contentSize.y - viewSize.y, 0) : Mathf.Max(contentSize.x - viewSize.x, 0); public float ViewLength => direction == Direction.Vertical ? viewSize.y : viewSize.x; + public MoveingEvent OnMoveing + { + get => moveingEvent; + set => moveingEvent = value; + } + public ScrollerEvent OnValueChanged { get => scrollerEvent; @@ -144,6 +151,7 @@ namespace AlicizaX.UI.RecyclerView position += velocity; OnValueChanged?.Invoke(position); + OnMoveing?.Invoke(); } public virtual void OnScrolled(PointerEventData eventData) @@ -155,7 +163,7 @@ namespace AlicizaX.UI.RecyclerView position += velocity; OnValueChanged?.Invoke(position); - + OnMoveing?.Invoke(); Elastic(); }