今天在开发的时候,涉及到了使用倒计时来显示。
首先自己的思路是:
1、设计显示的Lable。
2、对传入的时间进行处理,转成字符串00:00:00。通过调用回调函数来控制一秒刷新一次。
转换算法:
1 h = math.floor(time / 3600), 2 m = math.floor((time % 3600) / 60), 3 s = math.floor((time % 3600) % 60)。
3、设置回调函数,通过延时一秒和调用Label显示函数。
代码如下:
1 function TimeNumLayer:__init() 2 Layer.__init(self) 3 4 self.start_time = 0 5 self.run_time = 0 6 7 self.time_label = Label.CreateWithString(" ", GlobalConfig.FontType, 10) 8 self:AddChild(self.time_label) 9 self.time_label:SetPosition(0, 0) 10 11 self.cd_time = self.cd_time or 0 12 self:Start() 13 end 14 15 function TimeNumLayer:Update(interval) 16 self.run_time = self.run_time + interval 17 local cd_time = 0 18 19 if self.cd_time > 0 then 20 cd_time = self.cd_time - self.run_time 21 end 22 23 if cd_time < 0 then 24 cd_time = 0 25 end 26 self.time_label:SetString(LogicHandle.Get24FormatStr(cd_time)) 27 end 28 29 function TimeNumLayer:Start() 30 self.start_time = game_app.game_server_time 31 self.cd_time = game_app.pet_call_info.PerfectTime 32 self.run_time = 0 33 end