ExitTimeTip = ExitTimeTip or BaseClass(BaseView) local ExitTimeTip = ExitTimeTip --[[ 使用范例 local data = { time = time,--倒计时时间 use_action = 15,--最后几秒使用闪烁 ------------------------- call_back = function() --时间到期回调函数 self.model:Fire(BeachConst.REQ_QUIT_SCENE) end, exit_desc = "%s 自动退出",--不同退出提示 time_str = "秒后",--需要放大的时间链接字符串<#ffffff>10秒后击败小怪解除 } GlobalEventSystem:Fire(EventName.OPEN_EXIT_TIME_TIP,data) --]] function ExitTimeTip:__init() self.base_file = "common" self.layout_file = "ExitTimeTip" self.layer_name = "Main" self.destroy_imm = true self.change_scene_close = true self.append_to_ctl_queue = false --是否要添加进界面堆栈 self.need_show_money = false --是否要显示顶部的金钱栏 -- self.is_set_zdepth = true self.click_bg_toClose = false ------------------------ -- 一级全屏界面: self.hide_maincancas = false --隐藏主界面 self.use_background = false --不一定显示遮罩 ------------------------ CommonController.Instance:Fire(EventName.CLOSE_SPECIALTIPVIEW)--防止重叠 self.load_callback = function () self:LoadSuccess() end self.open_callback = function ( ) self:OpenSuccess() end self.close_win_callback = function ( ) self:Close() end self.destroy_callback = function ( ) self:DestroySuccess() end end function ExitTimeTip:Open( data ) data.time = data.time or 10 self.data = data self.data.end_time = data.time + TimeUtil:getServerTime() --把时间段转为时间戳,兼容计时器帧率不稳定的问题 self.data.exit_desc = data.exit_desc or "自动退出" self.data.time_str = data.time_str or "秒后" BaseView.Open(self) end function ExitTimeTip:LoadSuccess() local nodes = { "container/exitTimeText:tmp", "container:obj", "container/exitTimeBg:raw", } self:GetChildren(nodes) lua_resM:setOutsideRawImage(self, self.exitTimeBg_raw, GameResPath.GetViewBigBg("special_tip_di_3"), false) self:AddEvent() ------------------------- SetSizeDelta(self.transform, ScreenWidth, ScreenHeight) SetAnchoredPosition(self.transform, 0, 0) end function ExitTimeTip:AddEvent() end function ExitTimeTip:OpenSuccess() self:UpdateView() end function ExitTimeTip:UpdateView() self.clock_time = self.data.end_time - TimeUtil:getServerTime() local use_action = self.data and self.data.use_action or 0 local call_back = self.data and self.data.call_back SetVisibleByRotate( self.container.transform, self.clock_time > 0 ) ------------------------- local function clockFun() self.clock_time = self.data.end_time - TimeUtil:getServerTime() if self.clock_time >= 0 then self.exitTimeText_tmp.text = string.format("<#ffffff>%s%s%s",self.clock_time,self.data.time_str,self.data.exit_desc) ------------------------- if (not self.is_action) and (self.clock_time <= use_action) then self:StartExitAction() end else if call_back then call_back() end self:Close() end end clockFun() self.close_time_id = self.close_time_id or GlobalTimerQuest:AddPeriodQuest(clockFun, 0.5, -1) end --开始退出按钮闪烁动画 function ExitTimeTip:StartExitAction( ) self.is_action = true if not self.container_canvas then self.container_canvas = self.container:GetComponent("CanvasGroup") end self.container_canvas.alpha = 0 local function show_icon_func( percent ) self.container_canvas.alpha = percent end local show_update = cc.CustomUpdate.New(0.5,show_icon_func) local function hide_icon_func( percent ) self.container_canvas.alpha = 1 - percent end local hide_update = cc.CustomUpdate.New(0.5,hide_icon_func) local action = cc.Sequence.New(show_update,hide_update) self:AddAction(cc.RepeatForever.New(action), self.container) end function ExitTimeTip:DestroySuccess( ) if self.close_time_id then GlobalTimerQuest:CancelQuest(self.close_time_id) self.close_time_id = nil end end