今天在开发的时候,涉及到了使用倒计时来显示。

首先自己的思路是:

1、设计显示的Lable。

2、对传入的时间进行处理,转成字符串00:00:00。通过调用回调函数来控制一秒刷新一次。

转换算法:

h = math.floor(time / 3600), 
m = math.floor((time % 3600) / 60), 
s = math.floor((time % 3600) % 60)。

3、设置回调函数,通过延时一秒和调用Label显示函数。


代码如下:

function TimeNumLayer:__init()
Layer.__init(self)

self.start_time = 0
self.run_time = 0

self.time_label = Label.CreateWithString(" ", GlobalConfig.FontType, 10)
self:AddChild(self.time_label)
self.time_label:SetPosition(0, 0)

self.cd_time = self.cd_time or 0
self:Start()

end


function TimeNumLayer:Update(interval)

self.run_time = self.run_time + interval
local cd_time = 0

if self.cd_time > 0 then 
cd_time = self.cd_time - self.run_time
end

if cd_time < 0 then
cd_time = 0
end
self.time_label:SetString(LogicHandle.Get24FormatStr(cd_time))

end


function TimeNumLayer:Start()

self.start_time = game_app.game_server_time
self.cd_time = game_app.pet_call_info.PerfectTime
self.run_time = 0

end