local UIHelpTipsPanel = UIViewClass() local TipsFrequency = 0.5 local Const_StayTime = 3 -- 停留3秒 function UIHelpTipsPanel:OnOpened() self:RegistSystemEvent(EventID.UI_AddHelpTips, self.AddData) self:RegistSystemEvent(EventID.UI_HelpTips_Clear, self.Clear) self.CurIDSDic = {} -- 统计IDS的显示时间 ,并做排重用 end function UIHelpTipsPanel:AddData(str) if self.CurIDSDic[str] then return end self:StartRepeatFunc(self.OnUpdateFun, TipsFrequency) self.LoopScroll_Tips:AddData(str , 0) self.CurIDSDic[str] = Const_StayTime end function UIHelpTipsPanel:OnCellInit(scrollRect, index, cellTable, str) if scrollRect == self.LoopScroll_Tips then UIUtils.SetLabelText(cellTable.txt_tips, str) cellTable.cell.transform:SetAsFirstSibling() end end function UIHelpTipsPanel:OnCellClicked(scrollRect, index, cellTable, target, str) if scrollRect == self.LoopScroll_Tips then self.LoopScroll_Tips:RemoveIndex(index) self.CurIDSDic[str] = nil end end function UIHelpTipsPanel:Clear() self.LoopScroll_Tips:ClearCells() end function UIHelpTipsPanel:OnUpdateFun(deltaTime, timeSinceUpdate) local scrollCellCount = self.LoopScroll_Tips.Count if scrollCellCount <= 0 then self:StopRepeatFunc(self.OnUpdateFun) else for str,time in pairs(self.CurIDSDic) do local newTime = time - deltaTime if newTime <= 0 then self.LoopScroll_Tips:RemoveIndex(0) -- 因为是固定时间 ,这些tips都是队列的 ,所以总是第一个先到达时间 。 self.CurIDSDic[str] = nil else self.CurIDSDic[str] = newTime end end end end return UIHelpTipsPanel