源战役客户端
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

91 linhas
2.5 KiB

4 semanas atrás
  1. SysInfoHornView = SysInfoHornView or BaseClass()
  2. SysInfoHornView.MAX_MSG_COUNT = 10
  3. function SysInfoHornView:__init()
  4. self.has_text = false
  5. self.time = 0.0
  6. self.item = nil
  7. self.speed = 150
  8. self.text_list = Array.New()
  9. self.idle_text_list = Array.New()
  10. local function call_back(objs)
  11. self.prefab_asset = objs[0]
  12. self:CreateMessageContainer()
  13. for i=1,3 do
  14. self.text_list:PushBack(self.item:GetChild("Text"..i))
  15. end
  16. end
  17. lua_resM:loadPrefab(self,"common","HornTv", call_back)
  18. end
  19. function SysInfoHornView:__delete()
  20. lua_resM:clearReference(self)
  21. self:CancelDelayTimer()
  22. end
  23. function SysInfoHornView:CancelDelayTimer( )
  24. if self.time_id then
  25. GlobalTimerQuest:CancelQuest(self.time_id)
  26. self.time_id = nil
  27. end
  28. end
  29. function SysInfoHornView:CreateMessageContainer()
  30. if self.prefab_asset then
  31. self.item = HornTv.New(panelMgr:GetParent("Top"),self.prefab_asset)
  32. end
  33. end
  34. function SysInfoHornView:AppendMessage()
  35. if not self.has_text then
  36. self:RunMessage()
  37. end
  38. end
  39. function SysInfoHornView:RunMessage()
  40. if not self.item then return end
  41. local info = ChatModel:getInstance():RemoveDelayHorn()
  42. if not info then return end
  43. if SceneManager:getInstance():IsNoHornAndNoticeScene() then return end
  44. local text = self.text_list:PopFront()
  45. --1.所有text正在使用 2.TweenLite回调没有执行 -->把第一个text取出使用
  46. if not text then text = self.idle_text_list:PopFront() return end
  47. self.idle_text_list:PushBack(text)
  48. local content = ""
  49. if info.is_teaching then
  50. content = string.format("<color='%s'>%s</color>", info.color, info.msg)
  51. else
  52. content = string.format("<color='%s'>%s:%s</color>", ColorUtil.YELLOW, info.name, info.msg)
  53. end
  54. SetInlineText(text:GetComponent("Text"),content)
  55. text.sizeDelta = Vector2(text:GetComponent("Text").preferredWidth,35)
  56. self.has_text = true
  57. self.item.gameObject:SetActive(true)
  58. text.gameObject:SetActive(true)
  59. --滚屏
  60. local pos = text.localPosition
  61. local tSize = self.item.transform.sizeDelta
  62. self.time = (text.sizeDelta.x + tSize.x) / self.speed
  63. text.localPosition = Vector3(text.sizeDelta.x/2 + tSize.x/2, pos.y, pos.z)
  64. local tween_id = TweenLite.to(self, text, TweenLite.UiAnimationType.POSX, -tSize.x/2 - text.sizeDelta.x/2, self.time, function ()
  65. self.text_list:PushBack(self.idle_text_list:PopFront())
  66. if ChatModel:getInstance():GetDelayHornNum() <= 0 then
  67. self.item.gameObject:SetActive(false)
  68. self.has_text = false
  69. else
  70. self:RunMessage()
  71. end
  72. end)
  73. end
  74. function SysInfoHornView:SetHide(bool)
  75. self.item.gameObject:SetActive(not bool)
  76. end