2025-06-04 05:02:57 +08:00

74 lines
2.0 KiB
Plaintext

NoticeMsgView = class("NoticeMsgView",ContainerView)
NoticeMsgView.ViewType = UIViewType.BoardLayer
function NoticeMsgView:Init()
self:FindObjs()
self:AddEvts()
self.noticeMsgList = {}
end
function NoticeMsgView:FindObjs()
self.noticeMsg = self:FindGO("NoticeMsg"):GetComponent(TweenPosition)
self.noticeMsgLabel = self:FindGO("NoticeMsgLabel"):GetComponent(UILabel)
self.noticeMsgLabelTween = self.noticeMsgLabel.gameObject:GetComponent(TweenPosition)
end
function NoticeMsgView:AddEvts()
self:AddListenEvt(SystemMsgEvent.NoticeMsg,self.HandleNoticeMsg)
end
function NoticeMsgView:HandleNoticeMsg(note)
local data = note.body
table.insert(self.noticeMsgList , data)
-- LogUtility.InfoFormat("AddNoticeMsg : {0}",data.text)
if #self.noticeMsgList == 1 then
self:PlayNoticeMsg()
end
end
function NoticeMsgView:PlayNoticeMsg()
if #self.noticeMsgList > 0 then
local msg = self.noticeMsgList[1]
local text = msg.param and MsgParserProxy.Instance:TryParse(msg.text,unpack(msg.param)) or msg.text
self:PlayForwardNoticeMsg(text)
end
end
function NoticeMsgView:PlayForwardNoticeMsg(text)
self.noticeMsgLabel.text = text
self.noticeMsg:PlayForward()
self.noticeMsg:SetOnFinished(function ()
local perHeight = self.noticeMsgLabel.fontSize + self.noticeMsgLabel.spacingY
local line = self.noticeMsgLabel.printedSize.y / perHeight
if line > 1 then
LeanTween.delayedCall (self.gameObject, GameConfig.ShowNotice.duration , function ()
self.noticeMsgLabelTween:PlayForward()
self.noticeMsgLabelTween:SetOnFinished(function ()
self:PlayReverseNoticeMsg()
end)
end)
else
self:PlayReverseNoticeMsg()
end
end)
end
function NoticeMsgView:PlayReverseNoticeMsg()
LeanTween.delayedCall (self.gameObject, GameConfig.ShowNotice.duration , function ()
self.noticeMsg:PlayReverse()
self.noticeMsg:SetOnFinished(function ()
if self.noticeMsg.value == self.noticeMsg.from then
self.noticeMsgLabelTween:ResetToBeginning()
table.remove(self.noticeMsgList , 1)
self:PlayNoticeMsg()
end
end)
end)
end