--展示在界面左侧的带角色的specialtip样式 SpecialTipViewTwo = SpecialTipViewTwo or BaseClass(BaseView) local SpecialTipViewTwo = SpecialTipViewTwo local TimeUtil = TimeUtil function SpecialTipViewTwo:__init() self.base_file = "common" self.layout_file = "SpecialTipViewTwo" -- 计时器里面会跑到的model,都要在这里注册,减少对_G表的搜索 self.scene_mgr = SceneManager:getInstance() self.dungeon_model = BaseDungeonModel:getInstance() self.layer_name = "Main" self.destroy_imm = true self.use_background = false self.change_scene_close = true self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 self.load_callback = function () self:LoadSuccess() self:AddEvent() end self.open_callback = function ( ) self:OpenSuccess() end self.destroy_callback = function ( ) self:DestroySuccess() end end -- data = { -- type, -- 类型 默认1 1=显示文本定时关闭 2=持续显示倒计时类型1(必须写sepeical_str,且只带一个%s用来展示时间) -- module_id,--模块id -- id,--子模块,与module_id共同使用来寻找Config.Languageextra中的提示语 -- sepeical_str,--强制显示文本,传了次文本时,不找配置,直接显示文本内容 -- show_time,--显示时长,时间过后会关闭tipview,nil或false时tipview需要发送事件手动关闭 -- need_flash,--是否需要闪动 -- bg_type,--传1则为红底,否则默认蓝底 -- breath_call_back,--呼吸模式结束后的回调 -- end_time_callback,--倒计时结束之后的回调 -- } function SpecialTipViewTwo:InitTipData(data) self.module_id = data.module_id self.id = data.id self.sepeical_str = data.sepeical_str self.show_time = data.show_time self.need_flash = data.need_flash self.type = data.type or SpecialTipType.Normal if self.end_time_callback then self.end_time_callback() end self.end_time_callback = data.end_time_callback self.bg_type = data.bg_type or nil self.breath_call_back = data.breath_call_back or nil self.change_bg_flag = false--宠物副本用:是否换过背景 self.need_change_bg = data.need_change_bg--是否需要换背景 self.sepeical_str2 = data.sepeical_str2 end function SpecialTipViewTwo:Open(data,layout_file_type,layer_name) -- if layout_file_type and self.layout_file_type ~= layout_file_type then --类型不同的预制体要重新打开界面 -- self:Close() -- CommonController.Instance:Fire(EventName.OPEN_SpecialTipViewTwo, data,layout_file_type, layer_name) -- return -- elseif layer_name and self.layer_name ~= layer_name then --层级不同的也要重新打开界面 -- self:Close() -- CommonController.Instance:Fire(EventName.OPEN_SpecialTipViewTwo, data,layout_file_type, layer_name) -- return -- end self:InitTipData(data) BaseView.Open(self) end function SpecialTipViewTwo:LoadSuccess() self.nodes = { "di_con/label_tip:txt", "di_con/di_tip:raw:obj","di_con", } self:GetChildren(self.nodes) self.di_con_canvas = self.di_con:GetComponent("CanvasGroup") --设置sceneView的自适应 -- self.transform.sizeDelta = Vector2(ScreenWidth, ScreenHeight) SetAnchoredPosition(self.transform, 0, 0) end function SpecialTipViewTwo:AddEvent() end function SpecialTipViewTwo:OpenSuccess() self:UpdateView() --不设置显示时间时不会自动关闭界面 if not self.show_time then return end local function clockFun() self.show_time = self.show_time or 0 if self.show_time <= 0 then self:Close() end self.show_time = self.show_time - 1 end if not self.close_time_id then self.close_time_id = GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1) if self.need_flash then self.di_con_canvas.alpha = 0 self:FlashHideCall() end end end function SpecialTipViewTwo:FlashShowCall( ) if self._use_delete_method then return end if self.di_con then local function callback( ) self:FlashHideCall() end self.di_tip_img_anim_id = TweenLite.to(self, self.di_con_canvas, TweenLite.UiAnimationType.ALPHA, 1, 0.8, callback) -- self.label_tip_txt_anim_id = TweenLite.to(self, self.label_tip_txt, TweenLite.UiAnimationType.ALPHA_OLD, 1, 0.8, nil) end end function SpecialTipViewTwo:FlashHideCall( ) if self._use_delete_method then return end if self.di_tip then local function callback( ) self:FlashShowCall() end if not self.delay_hide_id then local function delay( ) self:RemoveDelayHideId() self.di_tip_img_anim_id = TweenLite.to(self, self.di_con_canvas, TweenLite.UiAnimationType.ALPHA, 0.5, 0.5, callback) -- self.label_tip_txt_anim_id = TweenLite.to(self, self.label_tip_txt, TweenLite.UiAnimationType.ALPHA_OLD, 0.5, 0.5, nil) end self.delay_hide_id = setTimeout(delay,0.2) end end end function SpecialTipViewTwo:GetLabelInfo( ) if not self.sepeical_str then local module_id = self.module_id or 0 local id = self.id or 0 local cfg = Config.Languageextra[module_id .. "@" .. id] return (cfg and cfg.content) and Trim(cfg.content) or "警报!前方高能!" else return self.sepeical_str end end function SpecialTipViewTwo:UpdateView() lua_resM:setOutsideRawImage(self, self.di_tip_raw, GameResPath.GetRoleBg("special_tip_di_2"), false) SetAnchoredPosition(self.transform,0,0) local info = self:GetLabelInfo() or "" if self.type == SpecialTipType.Normal then self.label_tip_txt.text = info -- 动态拓展倒计时的类型,就放在这里面,原则上倒计时类型可使用同一个self.tip_type_timer_id来保存计时器id elseif self.type == SpecialTipType.Timer1 then self:StartTimerType1() end end -- 类型1计时器 function SpecialTipViewTwo:StartTimerType1( ) local end_time = self:GetTimerTypeEndTime() local druation_speed = self:GetTimerTypeDurationSpeed() local left_time local function tipTypeTimer1Func() left_time = end_time - TimeUtil:getServerTime() left_time = left_time > 0 and left_time or 0 self.label_tip_txt.text = string.format(self.sepeical_str, TimeUtil:convertTimeWithoutHour(left_time)) if left_time <= 0 and self.end_time_callback then self.end_time_callback() self.end_time_callback = nil end end self.tip_type_timer_id = GlobalTimerQuest:AddPeriodQuest(tipTypeTimer1Func, druation_speed, -1) end -- 当出现多个Tip同时发过来的时候做覆盖处理,最后一个发过来的作为当前显示 function SpecialTipViewTwo:UpdateTips(data) self:InitTipData(data) -- 清除掉所有事件 self:RemoveCloseTimeId() self:RemoveDelayHideId() self:RemoveTimerTypeId() self:StopAllAnim() -- 初始化所有文本 self:InitAllText() -- 重置UI状态 -- self.di_tip_img.alpha = 0.8 -- SetAlpha(self.label_tip_txt, 0.8) self:UpdateView() --不设置显示时间时不会自动关闭界面 if not self.show_time then return end -- 重新开始计时 local function clockFun() self.show_time = self.show_time or 0 if self.show_time <= 0 then self:Close() end self.show_time = self.show_time - 1 end if not self.close_time_id then self.close_time_id = GlobalTimerQuest:AddPeriodQuest(clockFun, 1, -1) if self.need_flash then self:FlashHideCall() end end end -- 初始化所有的文本 function SpecialTipViewTwo:InitAllText( ) self.label_tip_txt.text = "" end function SpecialTipViewTwo:RemoveCloseTimeId( ) if self.close_time_id then GlobalTimerQuest:CancelQuest(self.close_time_id) self.close_time_id = nil end end function SpecialTipViewTwo:RemoveDelayHideId( ) if self.delay_hide_id then GlobalTimerQuest:CancelQuest(self.delay_hide_id) self.delay_hide_id = nil end end function SpecialTipViewTwo:RemoveTimerTypeId( ) if self.tip_type_timer_id then GlobalTimerQuest:CancelQuest(self.tip_type_timer_id) self.tip_type_timer_id = nil end end function SpecialTipViewTwo:StopAllAnim( ) if self.di_tip_img_anim_id then TweenLite.Stop(self.di_tip_img_anim_id) self.di_tip_img_anim_id = nil end end function SpecialTipViewTwo:DestroySuccess( ) self:RemoveCloseTimeId() self:RemoveDelayHideId() self:RemoveTimerTypeId() end