--- --- Generated by EmmyLua(https://github.com/EmmyLua) --- Created by Administrator. --- DateTime: 2019/5/16 11:21 --- --[[ local CountDownTimer = {} local this = CountDownTimer function this.New(textNode, deltaTime, doneFunc) if not textNode or not deltaTime then Log("CountDownTimer creat error!! params can not be nil!!!") return end local o = {} this.__index = this setmetatable(o, this) o.node = textNode o.deltaTime = deltaTime o.doneFunc = doneFunc return o end -- 开始计时 function this:Start() if self.TimeCounter then return self end if not self.deltaTime then return end -- 计算时分秒 self:ResetTime(self.deltaTime) -- 计算时间显示的方法 local function CountShow() -- 判断计时是否结束 if self.IsOver then return end -- self._sec = self._sec - 1 if self._sec < 0 then self._sec = 59 self._min = self._min - 1 if self._min < 0 then self._min = 59 self._hour = self._hour - 1 if self._hour < 0 then self._sec = 0 self._min = 0 self._hour = 0 self.IsOver = true if self.doneFunc then self.doneFunc() end end end end if self.node then self.node:GetComponent("Text").text = string.format("%2d:%02d:%02d", self._hour, self._min, self._sec) end end -- 计时开始 CountShow() self.TimeCounter = Timer.New(CountShow, 1, -1, true) self.TimeCounter:Start() return self end -- 重置时间显示节点 function this:ResetNode(node) if not node then return end self.node = node end -- 重置时间 function this:ResetTime(deltaTime) if not deltaTime or deltaTime < 0 then return end self.deltaTime = deltaTime self._sec = self.deltaTime % 60 local allMin = math.floor(self.deltaTime / 60) self._min = allMin % 60 self._hour = math.floor(allMin / 60) -- 计时器开始 self.IsOver = false end -- 完成回调 function this:ResetDoneFunc(func) self.doneFunc = func end -- 记得销毁 function this:Destroy() self.node = nil if self.TimeCounter then self.TimeCounter:Stop() self.TimeCounter = nil end self = nil end return this ]]