cocosLua 之 定时器

注:此博客从个人博客园移植而来

在3.x lua其定时器的使用方式主要有两种:

1. 帧刷新

顾名思义,每帧都会调用,在Node及其子类中使用,无法自定义时间间隔

调用方法为:scheduleUpdateWithPriorityLua

销毁方法为:unscheduleUpdate

local function frameUpdate(dt)
    count2 = count2 + dt
    self._states[2]:setString("帧刷新时间:" .. count2)
end

--[[
self为Node相关
参数1: 回调接口用于刷新 参数2: 刷新优先级

其调用实质上就是C++中的 scheduleUpdate , 该方法会在每帧调用C++中的 update 方法
在cocoslua的NodeEx.lua中 Node.scheduleUpdate 的实现就是此方法

在销毁的时候,一定要注意调用 self:unscheduleUpdate() 方法,否则会出现问题
]]
self:scheduleUpdateWithPriorityLua(frameUpdate, 0)

2. 定时器刷新

在指定的时间间隔内刷新一次或者无限次

调用方法: cc.Director:getInstance():getScheduler():scheduleScriptFunc

销毁方法: cc.Director:getInstance():getScheduler():unscheduleScriptEntry

local function timerUpdate(dt)
    count1 = count1 + dt
    self._states[1]:setString("定时刷新时间:" .. count1)
end 
--[[
参数1:回调接口用于刷新
参数2:每次刷新的时间间隔
参数3:是否仅执行一次,false为无限次(此参数若设置为true,也就是C++中的scheduleOnce)
]]
local _schedule = cc.Director:getInstance():getScheduler()
-- 添加判定是为了避免定时器的重复定义, 
if self._timerScheduler ~= nil then 
    _schedule:unscheduleScriptEntry(self._timerScheduler)
    self._timerScheduler = nil 
end 
self._timerScheduler = _schedule:scheduleScriptFunc(timerUpdate, 5, false)

-- 销毁时,一定要记得定时器销毁
function test:dispose() 
	if self._timerScheduler then 
		local _schedule = cc.Director:getInstance():getScheduler()
		_schedule:unscheduleScriptEntry(self._timerScheduler)
    	self._timerScheduler = nil 
    end 
    -- do other something 
end 

End

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹤九日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值