MessageItem = MessageItem or BaseClass(BaseItem) local MessageItem = MessageItem local EnglineVersion = EnglineVersion local AppConst_EnglineVer = AppConst_EnglineVer local MsgType = { Normal = 1, Exp = 2, } function MessageItem:__init(parent,prefab_asset,layer_name,callback,msg_type) self.base_file = "message" self.layout_file = "miniMessage" self.layer_name = "Top" self.anim_list = {} self.timer_list = {} self.fade_in_time = 0.8 self.stay_time = 0.3 self.fade_out_time = 0.6 self.state = 0 self.content = "" self.callback = callback self.msg_type = msg_type self:Load() end function MessageItem:__delete() self:StopAnim() end function MessageItem:Load_callback() self.bg = self:GetChild("bg").gameObject self.bg_transform = self.bg.transform --self.bg_img = self.bg:GetComponent("Image") self.text = self:GetChild("Text"):GetComponent("Text") self.expText = self:GetChild("expText"):GetComponent("Text") self.out_line = self:GetChild("expText"):GetComponent("Outline") self.canvasGroup = self.transform:GetComponent("CanvasGroup") self.gameObject:SetActive(false) end function MessageItem:CreateFinAnim(content) if not self.gameObject then return end self:StopAnim() self.state = 1 self:ResetUIZDepth() self.content = content or self.content -- item.bg.sizeDelta = Vector2(item.text.preferredWidth + 50,43) self.gameObject:SetActive(true) self:AddUIZDepth() self.canvasGroup.alpha = 0.0 --不仅z轴要跑到最前面, orderinlayer也要最前面 UIDepth.SetUIDepth(self.gameObject,true,self:GetCurrLayerDepth(self.layer_name)+1) --层次要在ui层,不设就在default层,会低于ui层而看不到 self.gameObject.layer = UIPartical.RenderingOther_List.UI --设置每一个item的位置,让所有item居中 SetLocalPosition(self.transform, 0,0,GetLocalPositionZ(self.transform)) self.text.text = self.content --目前是写死310的文本长度,如果超过了,让策划改文本 -- local width = math.max(300,self.text.preferredWidth+40) self.bg_transform.sizeDelta = Vector2(310,48) local index = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.POSY, GetLocalPositionY(self.transform) + 90, self.fade_in_time, function() self:CreateStayAnim() end) table.insert(self.anim_list, index) local temp1 = TweenLite.to (self, self.canvasGroup, TweenLite.UiAnimationType.ALPHA, 1, self.fade_in_time) table.insert(self.anim_list, temp1) --[[ if EnglineVersion and AppConst_EnglineVer >= 24 then -- local temp1 = TweenLite.to(self, self.canvasGroup, TweenLite.UiAnimationType.ALPHA, 1, self.fade_in_time) -- table.insert(self.anim_list, temp1) local temp1 = TweenLite.to (self, self.bg_img, TweenLite.UiAnimationType.ALPHA_OLD, 1, self.fade_in_time) table.insert(self.anim_list, temp1) else local temp1 = TweenLite.to (self, self.bg_img, TweenLite.UiAnimationType.ALPHA_OLD, 1, self.fade_in_time) table.insert(self.anim_list, temp1) -- local temp2 = TweenLite.to(self, self.text, TweenLite.UiAnimationType.ALPHA_OLD, 1, self.fade_in_time) -- table.insert(self.anim_list, temp2) end --]] end function MessageItem:CreateStayAnim() self:StopAnim() self.state = 2 -- if EnglineVersion and AppConst_EnglineVer >= 24 then self.canvasGroup.alpha = 1 -- else -- SetAlpha(self.bg_img, 1) -- SetAlpha(self.text, 1) -- end table.insert(self.timer_list, GlobalTimerQuest:AddDelayQuest(function() self:CreateFoutAnim() end, self.stay_time)) if self.callback then self.callback() end end function MessageItem:CreateFoutAnim() self:StopAnim() self.state = 3 local anim_end_func = function () self.state = 0 self:StopAnim() self:ResetUIZDepth() self.gameObject:SetActive(false) end local index = TweenLite.to(self, self.transform, TweenLite.UiAnimationType.POSY, GetLocalPositionY(self.transform) + 100, self.fade_out_time, anim_end_func) table.insert(self.anim_list, index) local temp1 = TweenLite.to(self, self.canvasGroup, TweenLite.UiAnimationType.ALPHA, 0, self.fade_out_time) table.insert(self.anim_list, temp1) -- local temp2 = TweenLite.to(self, self.text, TweenLite.UiAnimationType.ALPHA_OLD, 0, self.fade_out_time) -- table.insert(self.anim_list, temp2) --[[ if EnglineVersion and AppConst_EnglineVer >= 24 then -- local index = TweenLite.to(self, self.canvasGroup, TweenLite.UiAnimationType.ALPHA, 0, self.fade_out_time) -- table.insert(self.anim_list, index) local temp1 = TweenLite.to(self, self.bg_img, TweenLite.UiAnimationType.ALPHA_OLD, 0, self.fade_out_time) table.insert(self.anim_list, temp1) local temp2 = TweenLite.to(self, self.text, TweenLite.UiAnimationType.ALPHA_OLD, 0, self.fade_out_time) table.insert(self.anim_list, temp2) else local temp1 = TweenLite.to(self, self.bg_img, TweenLite.UiAnimationType.ALPHA_OLD, 0, self.fade_out_time) table.insert(self.anim_list, temp1) local temp2 = TweenLite.to(self, self.text, TweenLite.UiAnimationType.ALPHA_OLD, 0, self.fade_out_time) table.insert(self.anim_list, temp2) end --]] end function MessageItem:StopAnim() for i,v in ipairs(self.anim_list) do TweenLite.Stop(v) end self.anim_list = {} for i,v in ipairs(self.timer_list) do GlobalTimerQuest:CancelQuest(self.timer_list) end self.timer_list = {} end