【Cocos2dx 3.3 Lua】定时器事件
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 ]
SpriteZOrderWithFrameCall=class("SpriteZOrderWithFrameCall",function()
return cc.Sprite:create()
end) SpriteZOrderWithFrameCall.ctor=function(self)
self.zorder= local size=cc.Director:getInstance():getWinSize()
self:setPosition(size.width/,size.height/)
self:setScaleX()
end SpriteZOrderWithFrameCall.init=function(self,texture)
self:setTexture(texture)
self:setLocalZOrder(self.zorder)
self:scheduleUpdateWithPriorityLua(function(dt)
self:schedule()
end,)
end SpriteZOrderWithFrameCall.schedule=function(self)
cclog("<SpriteZOrderWithFrameCall.schedule>")
local function reorderSprite()
cclog("call <reorderSprite>"..os.clock())
local order=self:getLocalZOrder()
if order < - then
self.zorder=
elseif order > then
self.zorder=-
end
self.zorder=self.zorder+
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= local size=cc.Director:getInstance():getWinSize()
self:setPosition(size.width/,size.height/)
self:setScaleX()
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 < - then
self.zorder=
elseif order > then
self.zorder=-
end
self.zorder=self.zorder+
self:setLocalZOrder(self.zorder)
end local scheduler=cc.Director:getInstance():getScheduler()
scheduler:scheduleScriptFunc(reorderSprite,,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】定时器事件的更多相关文章
- (转载)【cocos2dx 3.x Lua] 注册事件函数详解
出处: http://www.2cto.com/kf/201409/338235.html coocs2dx 版本 3.1.1 registerScriptTouchHandler 注册触屏事件 re ...
- cocos2d-x lua 触摸事件
cocos2d-x lua 触摸事件 version: cocos2d-x 3.6 1.监听 function GameLayer:onEnter() local eventDispatcher = ...
- Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试)
Cocos2d-x 3.2 Lua演示样例 ClickAndMoveTest(点击移动測试) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中点击移动的样例,在这个样例你能够得到怎样创建单点触 ...
- Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求)
Cocos2d-x 3.2 Lua演示样例 XMLHttpRequestTest(Http网络请求) 本篇博客介绍Cocos2d-x 3.2Lua演示样例中的XMLHttpRequestTes ...
- Cocos2d-x 3.2 Lua演示样本CocosDenshionTest(音频测试)
Cocos2d-x 3.2 Lua演示样本CocosDenshionTest(音频测试) 本篇博客介绍Cocos2d-x 3.2中Lua演示样例的音频測试.Cocos2d-x使用SimpleAudi ...
- 【Cocos2dx 3.3 Lua】滚动字幕
参考资料: http://blog.csdn.net/jackystudio/article/details/12991977 1.原理 通过调用update来更新位置达到 ...
- 【Cocos2dx 3.x Lua】TileMap使用
1.编辑TileMap地图资源 2.Cocos2dx 3.x Lua中使用TileMap Link: http://codepad.org/P0nFP1Dx local TileMap=clas ...
- C# 定时器事件(设置时间间隔,间歇性执行某一函数,控制台程序)
定时器事件代码 static void Main(string[] args) { Method(); #region 定时器事件 Timer aTimer = new Timer(); aTimer ...
- Cocos2d-x 脚本语言Lua中的面向对象
Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类 ...
随机推荐
- Objective-c官方文档 封装数据属性
版权声明:原创作品,谢绝转载!否则将追究法律责任. 很多对象需要跟踪信息为了执行他们的任务.一些对象设计模型一个或者多个值.例如NSNumber 类用来保存一个值或者自定义的类有一些属性.有一些对象不 ...
- springbatch---->springbatch的使用(四)
这里我们重点学习一下springbatch里面的各种监听器的使用,以及job参数的传递.追求得到之日即其终止之时,寻觅的过程亦即失去的过程. springbatch的监听器 一.JOB LISTENE ...
- office excel Query 功能
Microsoft Query 合并查询 Excel 2016 默认已集成 Power Query 功能
- 深入学习Make命令和Makefile(下)
https://www.zybuluo.com/lishuhuakai/note/209300 make是Linux下的一款程序自动维护工具,配合makefile的使用,就能够根据程序中模块的修改情况 ...
- Hive学习之数据去重
insert overwrite table store select t.p_key,t.sort_word from ( select p_key, sort_word , row_number( ...
- LeetCode 24 Swap Nodes in Pairs (交换相邻节点)
题目链接: https://leetcode.com/problems/swap-nodes-in-pairs/?tab=Description Problem: 交换相邻的两个节点 如上 ...
- mysql索引覆盖之innodb和myisam效率问题
问题: create table A ( id varchar(64) primary key, ver int, ... ) 我的表有几个很长的字段varchar(3000) 在i ...
- golang学习资料[Basic]
http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html 基础语法 <Go By Exa ...
- android中SimpleCursorAdapter _id错误的问题
作为一个android新手,在绑定数据的时候是这样的 ListView listview=(ListView)this.findViewById(R.id.listView1); XJDal xj=n ...
- 【BZOJ3328】PYXFIB 数论+矩阵乘法
[BZOJ3328]PYXFIB Description Input 第一行一个正整数,表示数据组数据 ,接下来T行每行三个正整数N,K,P Output T行,每行输出一个整数,表示结果 Sampl ...