SysInfoHornView = SysInfoHornView or BaseClass() SysInfoHornView.MAX_MSG_COUNT = 10 function SysInfoHornView:__init() self.has_text = false self.time = 0.0 self.item = nil self.speed = 150 self.text_list = Array.New() self.idle_text_list = Array.New() local function call_back(objs) self.prefab_asset = objs[0] self:CreateMessageContainer() for i=1,3 do self.text_list:PushBack(self.item:GetChild("Text"..i)) end end lua_resM:loadPrefab(self,"common","HornTv", call_back) end function SysInfoHornView:__delete() lua_resM:clearReference(self) self:CancelDelayTimer() end function SysInfoHornView:CancelDelayTimer( ) if self.time_id then GlobalTimerQuest:CancelQuest(self.time_id) self.time_id = nil end end function SysInfoHornView:CreateMessageContainer() if self.prefab_asset then self.item = HornTv.New(panelMgr:GetParent("Top"),self.prefab_asset) end end function SysInfoHornView:AppendMessage() if not self.has_text then self:RunMessage() end end function SysInfoHornView:RunMessage() if not self.item then return end local info = ChatModel:getInstance():RemoveDelayHorn() if not info then return end if SceneManager:getInstance():IsNoHornAndNoticeScene() then return end local text = self.text_list:PopFront() --1.所有text正在使用 2.TweenLite回调没有执行 -->把第一个text取出使用 if not text then text = self.idle_text_list:PopFront() return end self.idle_text_list:PushBack(text) local content = "" if info.is_teaching then content = string.format("%s", info.color, info.msg) else content = string.format("%s:%s", ColorUtil.YELLOW, info.name, info.msg) end SetInlineText(text:GetComponent("Text"),content) text.sizeDelta = Vector2(text:GetComponent("Text").preferredWidth,35) self.has_text = true self.item.gameObject:SetActive(true) text.gameObject:SetActive(true) --滚屏 local pos = text.localPosition local tSize = self.item.transform.sizeDelta self.time = (text.sizeDelta.x + tSize.x) / self.speed text.localPosition = Vector3(text.sizeDelta.x/2 + tSize.x/2, pos.y, pos.z) local tween_id = TweenLite.to(self, text, TweenLite.UiAnimationType.POSX, -tSize.x/2 - text.sizeDelta.x/2, self.time, function () self.text_list:PushBack(self.idle_text_list:PopFront()) if ChatModel:getInstance():GetDelayHornNum() <= 0 then self.item.gameObject:SetActive(false) self.has_text = false else self:RunMessage() end end) end function SysInfoHornView:SetHide(bool) self.item.gameObject:SetActive(not bool) end