103 lines
2.4 KiB
Lua
103 lines
2.4 KiB
Lua
---
|
|
--- 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
|
|
|
|
|
|
]] |