UIFightPowerTipsView.lua 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. local UIFightPowerTipsView = require("UIFightPowerTips/UIFightPowerTipsView_Generate")
  2. local duration = 0.8
  3. local interTime = 0.03
  4. local speed = 0
  5. local timerId
  6. local curNum, endNum, deltaNum
  7. local unitWidth = 60
  8. local times
  9. local refresh
  10. function UIFightPowerTipsView:OnAwake(data)
  11. self.controller = require("UIFightPowerTips/UIFightPowerTipsCtr"):new()
  12. self.controller:Init(self)
  13. self.controller:SetData(data)
  14. end
  15. function UIFightPowerTipsView:AddEventListener()
  16. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name, UIEventNames.FIGHTPOWER_REFRESH_TIPS, function(data)
  17. self.uiBase:Show()
  18. self.controller:SetData(data)
  19. self:Init()
  20. end)
  21. end
  22. function UIFightPowerTipsView:FillContent(data, uiBase)
  23. self.uiBase = uiBase
  24. local gameObject = self.uiBase:GetRoot()
  25. if gameObject ~= nil then
  26. self.gameObject = gameObject
  27. self.transform = gameObject.transform
  28. end
  29. self:InitGenerate(self.transform, data)
  30. self:Init()
  31. end
  32. function UIFightPowerTipsView:ChangeTextRectWidth(layout, num)
  33. local len = string.len(num)
  34. layout.preferredWidth = len * unitWidth
  35. end
  36. function UIFightPowerTipsView:Init()
  37. refresh = true
  38. self.gameObject:SetActive(false)
  39. self.gameObject:SetActive(true)
  40. local data = self.controller:GetData()
  41. local startNum = data.startNum
  42. endNum = data.endNum
  43. deltaNum = endNum - startNum
  44. times = 1
  45. --self.fightPowerAdd.text.text = "+"..deltaNum
  46. --self.fightPower.rollingNumberText:RollingNumberOver(startNum, endNum)
  47. --self.fightPower.rollingNumberText:Change(startNum, endNum)
  48. speed = math.ceil(deltaNum *interTime / duration)
  49. if timerId ~= nil then
  50. ManagerContainer.LuaTimerMgr:RemoveTimer(timerId)
  51. timerId = nil
  52. end
  53. timerId = ManagerContainer.LuaTimerMgr:AddTimer(interTime * 1000, -1, self, self.ShowDelta, nil)
  54. curNum = startNum
  55. self.deltaNum.text.text = curNum
  56. local str = "+"..deltaNum
  57. self.addNum.text.text = str
  58. self:ChangeTextRectWidth(self.deltaNum.layoutElement, curNum)
  59. self:ChangeTextRectWidth(self.addNum.layoutElement, str)
  60. end
  61. function UIFightPowerTipsView:ShowDelta()
  62. times = times + 1
  63. curNum = curNum + speed
  64. curNum = math.min(endNum, curNum)
  65. self.deltaNum.text.text = curNum
  66. self:ChangeTextRectWidth(self.deltaNum.layoutElement, curNum)
  67. if curNum >= endNum then
  68. ManagerContainer.LuaTimerMgr:RemoveTimer(timerId)
  69. timerId = nil
  70. refresh = false
  71. self.transform:DOScale(1, 0.5):SetAutoKill():OnComplete(function ()
  72. if not refresh then
  73. self:UIClose()
  74. end
  75. end)
  76. end
  77. end
  78. function UIFightPowerTipsView:RemoveEventListener()
  79. ManagerContainer.LuaEventMgr:Unregister(self.uiData.name)
  80. end
  81. function UIFightPowerTipsView:AddUIEventListener()
  82. ManagerContainer.LuaEventMgr:RegisterUIEvent(self.uiData.name)
  83. --self.fightPower.rollingNumberText.OnComplete = function()
  84. -- self:UIHide(self)
  85. --end
  86. end
  87. function UIFightPowerTipsView:OnHide()
  88. end
  89. function UIFightPowerTipsView:OnShow(data)
  90. self.controller:SetData(data)
  91. self:Init()
  92. end
  93. function UIFightPowerTipsView:OnClose()
  94. if timerId ~= nil then
  95. ManagerContainer.LuaTimerMgr:RemoveTimer(timerId)
  96. timerId = nil
  97. end
  98. DG.Tweening.DOTween.Kill(self.transform)
  99. end
  100. function UIFightPowerTipsView:OnDispose()
  101. end
  102. return UIFightPowerTipsView