📅  最后修改于: 2023-12-03 14:52:25.855000             🧑  作者: Mango
在实际开发中,倒计时是比较常用的功能,下面是在Lua中如何实现倒计时的方法。
协程可以看做一种用户级线程,这里可以使用协程来实现倒计时的功能,代码如下:
function Countdown(time)
local start_time = os.time()
while os.time() - start_time <= time do
coroutine.yield(os.time() - start_time)
end
end
function main()
local count = 10
local co = coroutine.create(function() Countdown(count) end)
while coroutine.status(co) ~= "dead" do
local _, left_time = coroutine.resume(co)
print("还有"..tostring(count-left_time).."秒")
--其他操作,如更新UI等
end
print("倒计时结束")
end
main()
倒计时也可以使用定时器来实现,代码如下:
local timer = nil
local count = 10
local time_lab = nil
function showTime()
count = count - 1
if count < 0 then
--倒计时结束,销毁定时器
timer:stop()
return
end
time_lab:setString(tostring(count))
--其他操作,如更新UI等
end
function main()
--创建倒计时UI
time_lab = cc.Label:createWithSystemFont(tostring(count), "", 32)
time_lab:setPosition(cc.p(display.cx,display.cy))
time_lab:addTo(display.getRunningScene())
--创建定时器,每1秒回调一次showTime函数
timer = cc.Director:getInstance():getScheduler():scheduleScriptFunc(showTime, 1, false)
end
main()
以上两种方法各有优缺点,选择哪种方法应该根据开发需求来定。