【Cocos2dx 3.3 Lua】定时器事件
2015-03-15 12:11
337 查看
Cocos2dx 3.x Lua 中使用定时器有两种方式:
(1)self:scheduleUpdateWithPriorityLua(update, priority)
> 参数一:刷新函数
> 参数二:刷新优先级
其中 self 为 Node类 的子类。
该方法默认为每帧都刷新一次,无法自定义刷新时间间隔。
(2)scheduler:scheduleScriptFunc(update, inteval, false)
> 参数一:刷新函数
> 参数二:每次刷新的时间间隔
> 参数三:是否只执行一次。false为无限次。
其中 scheduler 为定时器管理:cc.Director:getInstance():getScheduler()
推荐使用第二种方式,因为比较通用。
1.1 使用scheduleUpdateWithPriorityLua函数:
Link: http://codepad.org/xAJnPP88 [ raw code | fork ]
观察输出如下:
控制台输出:
根据图所示,scheduleUpdateWithPriorityLua 每帧都会调用,运行时帧率为60FPS/1s 也就是执行一帧的时间为0.017s与控制台输出时间吻合
1.2 使用scheduler:scheduleScriptFunc(update,interval,false)的实例如下:
定时调整精灵Z轴位置:
观察输出如下:
控制台输出:
scheduleScriptFunc可以设置定时时间,这里设置2s执行一次定时函数,与控制台输出吻合
(1)self:scheduleUpdateWithPriorityLua(update, priority)
> 参数一:刷新函数
> 参数二:刷新优先级
其中 self 为 Node类 的子类。
该方法默认为每帧都刷新一次,无法自定义刷新时间间隔。
(2)scheduler:scheduleScriptFunc(update, inteval, false)
> 参数一:刷新函数
> 参数二:每次刷新的时间间隔
> 参数三:是否只执行一次。false为无限次。
其中 scheduler 为定时器管理:cc.Director:getInstance():getScheduler()
推荐使用第二种方式,因为比较通用。
1.1 使用scheduleUpdateWithPriorityLua函数:
Link: http://codepad.org/xAJnPP88 [ raw code | fork ]
SpriteZOrderWithFrameCall=class("SpriteZOrderWithFrameCall",function() return cc.Sprite:create() end) SpriteZOrderWithFrameCall.ctor=function(self) self.zorder=1 local size=cc.Director:getInstance():getWinSize() self:setPosition(size.width/2,size.height/2) self:setScaleX(12) end SpriteZOrderWithFrameCall.init=function(self,texture) self:setTexture(texture) self:setLocalZOrder(self.zorder) self:scheduleUpdateWithPriorityLua(function(dt) self:schedule() end,0) end SpriteZOrderWithFrameCall.schedule=function(self) cclog("<SpriteZOrderWithFrameCall.schedule>") local function reorderSprite() cclog("call <reorderSprite>"..os.clock()) local order=self:getLocalZOrder() if order < -1 then self.zorder=1 elseif order >10 then self.zorder=-1 end self.zorder=self.zorder+3 self:setLocalZOrder(self.zorder) end reorderSprite() end SpriteZOrderWithFrameCall.create=function(self) local sprite=self.new() sprite:init("Images/grossini.png") return sprite end return SpriteZOrderWithFrameCall
观察输出如下:
控制台输出:
根据图所示,scheduleUpdateWithPriorityLua 每帧都会调用,运行时帧率为60FPS/1s 也就是执行一帧的时间为0.017s与控制台输出时间吻合
1.2 使用scheduler:scheduleScriptFunc(update,interval,false)的实例如下:
定时调整精灵Z轴位置:
|
SpriteZOrder=class("SpriteZOrder",function() return cc.Sprite:create() end) SpriteZOrder.ctor=function(self) self.zorder=1 local size=cc.Director:getInstance():getWinSize() self:setPosition(size.width/2,size.height/2) self:setScaleX(12) end SpriteZOrder.init=function(self,texture) self:setTexture(texture) self:setLocalZOrder(self.zorder) self:registerScriptHandler(function(tag) local scheduler=nil if tag=="enter" then scheduler=self:onEnter() elseif tag=="exit" then self:onExit(scheduler) end end) end SpriteZOrder.onEnter=function(self) cclog("<SpriteZOrder.onEnter>") local function reorderSprite() cclog("call <reorderSprite>"..os.clock()) local order=self:getLocalZOrder() if order < -1 then self.zorder=1 elseif order >10 then self.zorder=-1 end self.zorder=self.zorder+3 self:setLocalZOrder(self.zorder) end local scheduler=cc.Director:getInstance():getScheduler() scheduler:scheduleScriptFunc(reorderSprite,2,false) return scheduler end SpriteZOrder.onExit=function(self,scheduler) cclog("<SpriteZOrder.onExit>") if scheduler then cc.Director:getInstance():getScheduler():unscheduleScriptEntry(scheduler) end end SpriteZOrder.create=function(self) local sprite=self.new() sprite:init("Images/grossini.png") return sprite end return SpriteZOrder
观察输出如下:
控制台输出:
scheduleScriptFunc可以设置定时时间,这里设置2s执行一次定时函数,与控制台输出吻合
相关文章推荐
- 【cocos2dx 3.3 lua】04 纸牌翻转效果--类似QQ斗地主癞子效果
- 【cocos2dx 3.3 lua】03 cocos studio使用与加载--hello studio
- 【Cocos2dx 3.3 Lua】定时器事件
- cocos2dx 3.3 C++工程添加lua支持
- 【cocos2dx 3.3 lua】09 lua配置文件读写
- cocos2dx_3.3 lua类的创建
- 减少cocos2dx3.3-lua的so文件大小笔记
- 【cocos2dx 3.3 lua】01 新建工程与lua加密
- 【Cocos2dx 3.3 Lua】触屏事件
- 【cocos2dx 3.3 lua】02 去掉调试信息以及多分辨率适配
- cocos2dx-3.3 导出自定义类到 lua 过程详解
- 记又一次升级Cocos2dx-3.3版本后在lua中 ccb动画完成回调setAnimationCompletedCallback修改方法
- cocos2dx 3.3 + lua 学习笔记(01)--- math库
- cocos2dx-3.3 lua实现一个单选按钮
- 【cocos2dx 3.3 lua】05 环绕倒计时效果
- 【Cocos2dx 3.3 Lua】导出Cocos2dx API文档
- cocos2dx 3.3 scrollView lua 版本幻灯片效果
- cocos2dx 3.3 lua 绑定类
- 【Cocos2dx 3.3 Lua】SpriteBatchNode和SpriteFrameCache使用
- cocos2dx 3.3 + lua 学习笔记(01)--- math库