📜  如何在 lua 中设置倒计时(1)

📅  最后修改于: 2023-12-03 14:52:25.855000             🧑  作者: Mango

如何在Lua中设置倒计时

在实际开发中,倒计时是比较常用的功能,下面是在Lua中如何实现倒计时的方法。

方法1:使用协程

协程可以看做一种用户级线程,这里可以使用协程来实现倒计时的功能,代码如下:

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()
方法2:使用定时器

倒计时也可以使用定时器来实现,代码如下:

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()

以上两种方法各有优缺点,选择哪种方法应该根据开发需求来定。