XLua框架搭建——Lua定时器的实现

前面介绍了lua中update的实现,利用update,我们可以实现lua的定时器类。
与c#定时器原理一样,我们需要提供注册函数与反注册函数,然后利用update注册对应的update循环,在update循环里获取当前事件,然后遍历当前的注册列表,比较当前时间和定时器的注册时间,如果到了指定时间,就进行函数调用,同样,函数注册时需要传递自身self。
注册函数类似如下

function TimeUtils.AddDelayInvoke(ins,func,delayTime,...)
    local td = TimeDelay.New(ins,func,delayTime,0,...);
    table.insert(TimeUtils.Instance.delayFunc,td);
    return td;
end

TimeDelay属性

---@field ins instance @实例
---@field func function @函数
---@field delayTime float @延迟时间
---@field lastTime float @上一次执行的时间
---@field interval float @执行间隔
---@field isRunning boolean @是否在执行
---@field args table @回调参数
---@class TimeDelay

对应的remove函数

function TimeUtils.RemoveDelayInvokeByTD(td)
    table.removeItem(TimeUtils.Instance.delayFunc,td);
end

通常定时器还会有延迟重复调用,注册及反注册类似于上面的代码,在循环里进行遍历即可,相关代码不在贴出,可以参考前面的文章。
这样,通过前面的update我们就实现了lua端的定时器,其他类可以通过调用这个定时器的注册函数和反注册函数实现对应的功能。

QQ交流群:517539056

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值