MoveScrr.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.Events;
  4. using UnityEngine.UI;
  5. public class MoveScrr : Move
  6. {
  7. #region 变量
  8. protected float Timer;
  9. protected float Duration;
  10. protected float Delta;
  11. protected float Origin;
  12. protected float Destination;
  13. protected ScrollRect Target;
  14. protected CurveFunctionF Func;
  15. #endregion
  16. public MoveScrr(ScrollRect target)
  17. {
  18. Target = target;
  19. }
  20. public override bool DoMove()
  21. {
  22. if (Timer > Duration)
  23. {
  24. Target.horizontalNormalizedPosition = Destination;
  25. Timer = 0;
  26. ManaAnim.MoveList.Remove(this);
  27. if (OnFinish != null)
  28. {
  29. OnFinish.Invoke();
  30. }
  31. return true;
  32. }
  33. else
  34. {
  35. Target.horizontalNormalizedPosition = Func(Timer, Duration, Origin, Delta);
  36. Timer += Time.fixedDeltaTime;
  37. return false;
  38. }
  39. }
  40. public void StartMove(float destination, float duration, Curve curve)
  41. {
  42. Timer = 0;
  43. Finish = false;
  44. Delta = destination - Target.horizontalNormalizedPosition;
  45. Origin = Target.horizontalNormalizedPosition;
  46. Duration = duration;
  47. Destination = destination;
  48. Func = ManaAnim.FunctionDicF[curve];
  49. if (OnStart != null)
  50. {
  51. OnStart.Invoke();
  52. }
  53. ManaAnim.MoveList.Remove(this);
  54. ManaAnim.MoveList.Add(this);
  55. }
  56. }