quick框架事件分发机制
quick框架中的事件分发机制与cocos2dx的不同。
quick框架的事件按照功能和用途分为:
(1)节点事件
(2)帧事件
(3)键盘事件
(4)加速计事件
(5)触摸事件
1、节点事件
节点事件在一个node对象进入和退出场景时触发。它能被场景及其所有子节点监听。
node:addNodeEventListener(cc.NODE_EVENT,function(event)
print(event.name)
)
参数event只有name属性,值为:
(1)enter:加载场景
(2)exit:退出场景
(3)enterTransitionFinish:转场特效结束
(4)exitTransitionStart:转场特效开始
(5)cleanup:场景被完全清理并从内存删除
例:
local function createTestScene(name)local scene = display.newScene(name)scene:addNodeEventListener(cc.NODE_EVENT,function (event)printf("node in scene [%s] NODE_EVENT:%s", name, event.name)end)return sceneend--节点延时调度器self:performWithDelay(function ()local scene1 = createTestScene("scene1")display.replaceScene(scene1)scene1:performWithDelay(function ()print("----------")local scene2 = createTestScene("scene2")-- display.replaceScene(scene2)display.replaceScene(scene2,"random",1.0)end,1.0)end,1.0)
display.replaceScene(scene2):
[LUA-print] node in scene [scene1] NODE_EVENT:enter
[LUA-print] node in scene [scene1] NODE_EVENT:enterTransitionFinish
[LUA-print] ----------
[LUA-print] node in scene [scene1] NODE_EVENT:exitTransitionStart
[LUA-print] node in scene [scene1] NODE_EVENT:exit
[LUA-print] node in scene [scene1] NODE_EVENT:cleanup
[LUA-print] node in scene [scene2] NODE_EVENT:enter
[LUA-print] node in scene [scene2] NODE_EVENT:enterTransitionFinish
display.replaceScene(scene2,"random",1.0):
[LUA-print] node in scene [scene1] NODE_EVENT:enter
[LUA-print] node in scene [scene1] NODE_EVENT:enterTransitionFinish
[LUA-print] ----------
[LUA-print] node in scene [scene1] NODE_EVENT:exitTransitionStart
[LUA-print] node in scene [scene2] NODE_EVENT:enter
[LUA-print] node in scene [scene1] NODE_EVENT:exit
[LUA-print] node in scene [scene2] NODE_EVENT:enterTransitionFinish
[LUA-print] node in scene [scene1] NODE_EVENT:cleanup
造成这种区别的原因是场景切换特效播放的时候,会同时渲染两个场景,所以可以看到第二个场景的enter事件出现后,第一个场景的exit事件才出现。
因此,在使用节点事件的时候,不应该假定事件出现的顺序,而要根据特定事件采取特定处理措施。
建议如下:
(1)enter:做一些场景初始化工作
(2)exit:如果场景切换使用特效,这里可以停止场景中的动画,避免帧率下降
(3)cleanup:清理工作
帧事件
在cocos2d-x中,C++可以通过重载update函数在每帧刷新的时候执行自己需要的一些操作。在quick框架中,这种事件被称为帧事件,意思是每帧刷新时都会执行的事件。
--事件分发机制, 帧事件local node = display.newNode()self:addChild(node)--注册事件node:addNodeEventListener(cc.NODE_ENTER_FRAME_EVENT,function (dt)print(dt)end)--启用帧事件node:scheduleUpdate()--0.5s后,停止帧事件node:performWithDelay(function ()--禁用帧事件node:unscheduleUpdate()print("STOP")node:performWithDelay(function ()--再次启用帧事件node:scheduleUpdate()end,0.5)end,0.5)
当帧刷新时,node注册的事件就会监听到并执行回调函数function(dt) 打印dt的值。
[LUA-print] 0.01570799946785
[LUA-print] 0.015955999493599
[LUA-print] 0.017960999161005
[LUA-print] 0.015959000214934
[LUA-print] 0.01596700027585
[LUA-print] 0.016983000561595
[LUA-print] 0.016931999474764
[LUA-print] 0.016989000141621
[LUA-print] STOP
[LUA-print] 0.016109999269247
[LUA-print] 0.016019999980927
[LUA-print] 0.017037000507116
[LUA-print] 0.015969000756741
[LUA-print] 0.016951000317931
----------------------------------------------------------------------------------------------
cocos2d-x之lua核心编程 学习笔记
quick框架事件分发机制相关推荐
- Android工作经验6年,Android事件分发机制收藏这一篇就够了,分享PDF高清版
前言 首先介绍一下自己,计算机水本,考研与我无缘.之前在帝都某公司算法部实习,公司算大公司吧,然而个人爱好偏开发,大二的时候写个一个app,主要是用各种框架. 饿了么Android岗一面 1:双亲委托 ...
- Android开发指南!Android事件分发机制收藏这一篇就够了,2年以上经验必看
前言 现在的终端开发已经开始进入稳定期,在这个阶段大厂压力很大小厂更会收到挤压,人们使用的App越来越固定,即使是大厂,几年前平台级应用发个Push就能引流几十万,现在这些的作用也越来越小,特别到了今 ...
- 事件分发机制Android,阿里P7级别面试经验总结,实战篇
缘起 随着Android开发行业逐渐饱和,对Android开发者的面试要求也越来越高,是否掌握底层源码,是面试官衡量一名Android开发者的重要依据.有没有读过源码也可以很大程度上判断你这个人的学习 ...
- 两年 Android 经验面经(有赞等公司),安卓事件分发机制面试
包类型分为Text类型.Table类型.资源类型.曲线类型.交互模式数据(曲线类型属性主要是点,关键方法append,可以增量更新数据) 公司自己定义了个 Base64编码,算法当然不要去纠结了 延伸 ...
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
<div id="container"> <div id="header"> <div class=&qu ...
- View事件分发机制(源码 API27)
1.什么是事件分发机制 当用户触摸屏幕时,会产生一个touch事件,这个touch事件(motionEvent)传递到某个具体的view处理的整个过程 用户触摸屏幕会产生一个事件流(ACTION_DO ...
- Android事件分发机制详解
2019独角兽企业重金招聘Python工程师标准>>> 之前在学习Android事件方法机制的时候,看过不少文章,但是大部分都讲的不是很清楚,我自己理解的也是云里雾里,也尝试过阅读源 ...
- android触摸事件分发,Android 事件分发机制
Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...
- View事件分发机制(源码分析篇)
01.Android中事件分发顺序 1.1 事件分发的对象是谁 事件分发的对象是事件.注意,事件分发是向下传递的,也就是父到子的顺序. 当用户触摸屏幕时(View或ViewGroup派生的控件),将产 ...
最新文章
- java的异常与记录日志
- PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断
- asp操作excel,显示数据及统计方法
- VTK:轮廓 Glow Pass用法实战
- JAVA Socket实现多客户端聊天
- reids源码 t_hash.c 实现
- 2018年python薪资_2018年国内就业薪资高的7大编程语言排行
- oracle新建用户sql局域,oracle 新建数据库,及创建用户,表空间,sqlplus导入导出数据库...
- JavaEE基础(03):Http请求详解,握手挥手流程简介
- 我国企业对开源社区的贡献度_开源对企业有利的6个理由
- python char 相等_用 Python 实现 Excel文本函数
- 卸载联想硬盘保护系统
- 吾欲使汝为恶,则恶不可为;使汝为善,则我不为恶。
- 忘记vmware虚拟机系统登入密码如何破解,破解vmware登录密码。
- 给新一代IT人的分享
- 思科路由器——静态路由超级详细
- QT 实现类似于qq的登录注册界面
- python画混淆矩阵 confusion matrix
- 笔记本一打开计算机就卡,电脑卡顿不流畅怎么办?电脑加速来帮你
- 这个弹丸小国,靠移民收割不少国人
热门文章
- 微信排版中,文字渐变色怎么实现?
- pytorch backward使用解析
- Linux操作系统下开启wifi热点的方法
- 右键word(docx)丢失问题
- RabbitMQ之Federation Exchange、Federation Queue、Shovel
- C语言教程(三)-if和循环
- SurfaceView 使用及SurfaceHolder.Callback() 回调方法分析
- 乐山市计算机学校杨美志,心有多大,舞台就有多大!乐山这名中职学生考上双一流211重点大学...
- python安装0x80072ee7_电脑错误0x80072EE7 - 卡饭网
- 企业网络营销发展前景趋势分析