【Cocos2dx 3.3 Lua】定时器事件

本文介绍了Cocos2d-x 3.3使用Lua进行定时器事件的方法,包括self:scheduleUpdateWithPriorityLua()用于每帧更新和scheduler:scheduleScriptFunc()用于自定义间隔时间的刷新。还展示了如何实现体力值的倒计时功能,包括getTimeString()函数用于格式化时间显示和startCountDownTimes()函数用于启动倒计时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



    (1)self:scheduleUpdateWithPriorityLua(update, priority)

        > 参一:刷新函数

        > 参二:刷新优先级

        其中 self 为 Node类 的子类。

        该方法默认为每帧都刷新一次,无法自定义刷新时间间隔。

    (2)scheduler:scheduleScriptFunc(update, inteval, false)

        > 参一:刷新函数

        > 参二:每次刷新的时间间隔

        > 参三:是否只执行一次。false为无限次。

    (3)根据时间回复体力值


function EnergyNotFullLayer:getTimeString(time)
    if time == nil then
        print("time is nil")
        return
    end
    local hours = math.floor(time / 3600)
    local minutes = math.floor((time % 3600) / 60)
    local seconds = math.floor(time % 60)
    if(hours < 10) then hours = "0"..hours end
    if(minutes < 10) then  minutes = "0"..minutes end
    if(seconds < 10) then seconds = "0"..seconds end
    local time = ""..hours..":"..minutes..":"..seconds
    return time
end



function EnergyNotFullLayer:startCountDownTimes(times)  --开始倒计时
    EnergyNotFullLayer.countDownTimes = times
    local callback = function()
        EnergyNotFullLayer.countDownTimes = (EnergyNotFullLayer.countDownTimes - 1)
        local time = EnergyNotFullLayer:getTimeString(EnergyNotFullLayer.countDownTimes)
        if EnergyNotFullLayer.countDownTimes >= 0 then
                EnergyNotFullLayer.timeLabel:setString(time)            
        else
        --移除回调
            if EnergyNotFullLayer.scheduler ~= nil then
                cc.Director:getInstance():getScheduler():unscheduleScriptEntry(EnergyNotFullLayer.scheduler)
                EnergyNotFullLayer.scheduler = nil
            end
        end
    end
    EnergyNotFullLayer.scheduler = cc.Director:getInstance():getScheduler():scheduleScriptFunc(callback, 0, false)
end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值