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框架事件分发机制相关推荐

  1. Android工作经验6年,Android事件分发机制收藏这一篇就够了,分享PDF高清版

    前言 首先介绍一下自己,计算机水本,考研与我无缘.之前在帝都某公司算法部实习,公司算大公司吧,然而个人爱好偏开发,大二的时候写个一个app,主要是用各种框架. 饿了么Android岗一面 1:双亲委托 ...

  2. Android开发指南!Android事件分发机制收藏这一篇就够了,2年以上经验必看

    前言 现在的终端开发已经开始进入稳定期,在这个阶段大厂压力很大小厂更会收到挤压,人们使用的App越来越固定,即使是大厂,几年前平台级应用发个Push就能引流几十万,现在这些的作用也越来越小,特别到了今 ...

  3. 事件分发机制Android,阿里P7级别面试经验总结,实战篇

    缘起 随着Android开发行业逐渐饱和,对Android开发者的面试要求也越来越高,是否掌握底层源码,是面试官衡量一名Android开发者的重要依据.有没有读过源码也可以很大程度上判断你这个人的学习 ...

  4. 两年 Android 经验面经(有赞等公司),安卓事件分发机制面试

    包类型分为Text类型.Table类型.资源类型.曲线类型.交互模式数据(曲线类型属性主要是点,关键方法append,可以增量更新数据) 公司自己定义了个 Base64编码,算法当然不要去纠结了 延伸 ...

  5. Android事件分发机制完全解析,带你从源码的角度彻底理解(上)

    <div id="container">         <div id="header">     <div class=&qu ...

  6. View事件分发机制(源码 API27)

    1.什么是事件分发机制 当用户触摸屏幕时,会产生一个touch事件,这个touch事件(motionEvent)传递到某个具体的view处理的整个过程 用户触摸屏幕会产生一个事件流(ACTION_DO ...

  7. Android事件分发机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 之前在学习Android事件方法机制的时候,看过不少文章,但是大部分都讲的不是很清楚,我自己理解的也是云里雾里,也尝试过阅读源 ...

  8. android触摸事件分发,Android 事件分发机制

    Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...

  9. View事件分发机制(源码分析篇)

    01.Android中事件分发顺序 1.1 事件分发的对象是谁 事件分发的对象是事件.注意,事件分发是向下传递的,也就是父到子的顺序. 当用户触摸屏幕时(View或ViewGroup派生的控件),将产 ...

最新文章

  1. java的异常与记录日志
  2. PAT甲级1134 Vertex Cover :[C++题解]顶点覆盖、图论、用结构体存边,bool数组判断
  3. asp操作excel,显示数据及统计方法
  4. VTK:轮廓 Glow Pass用法实战
  5. JAVA Socket实现多客户端聊天
  6. reids源码 t_hash.c 实现
  7. 2018年python薪资_2018年国内就业薪资高的7大编程语言排行
  8. oracle新建用户sql局域,oracle 新建数据库,及创建用户,表空间,sqlplus导入导出数据库...
  9. JavaEE基础(03):Http请求详解,握手挥手流程简介
  10. 我国企业对开源社区的贡献度_开源对企业有利的6个理由
  11. python char 相等_用 Python 实现 Excel文本函数
  12. 卸载联想硬盘保护系统
  13. 吾欲使汝为恶,则恶不可为;使汝为善,则我不为恶。
  14. 忘记vmware虚拟机系统登入密码如何破解,破解vmware登录密码。
  15. 给新一代IT人的分享
  16. 思科路由器——静态路由超级详细
  17. QT 实现类似于qq的登录注册界面
  18. python画混淆矩阵 confusion matrix
  19. 笔记本一打开计算机就卡,电脑卡顿不流畅怎么办?电脑加速来帮你
  20. 这个弹丸小国,靠移民收割不少国人

热门文章

  1. 微信排版中,文字渐变色怎么实现?
  2. pytorch backward使用解析
  3. Linux操作系统下开启wifi热点的方法
  4. 右键word(docx)丢失问题
  5. RabbitMQ之Federation Exchange、Federation Queue、Shovel
  6. C语言教程(三)-if和循环
  7. SurfaceView 使用及SurfaceHolder.Callback() 回调方法分析
  8. 乐山市计算机学校杨美志,心有多大,舞台就有多大!乐山这名中职学生考上双一流211重点大学...
  9. python安装0x80072ee7_电脑错误0x80072EE7 - 卡饭网
  10. 企业网络营销发展前景趋势分析