【Cocos2dx 3.3 Lua】触屏事件
onTouchBegan
如果返回true:本层的后续Touch事件可以被触发,并阻挡向后层传递
如果返回false,本层的后续Touch事件不能被触发,并向后传递,也就是不会调用
onTouchMoved
简单点来说,如果:
1.Layer 只有一层的情况:
 1virtualboolonTouchBegan(CCTouch *pTouch, CCEvent *pEvent);a.返回false,则ccTouchMoved(),ccTouchEnded()不会再接收到消息
b.返回true,则ccTouchMoved(),ccTouchEnded()可以接收到消息
2.Layer 有多层的情况:
 1virtualboolonTouchBegan(CCTouch *pTouch, CCEvent *pEvent);a.返回false,则本层的onTouchMoved(),onTouchEnded()不会再接收到消息,但是本层之下的其它层会接收到消息
b.返回true,则本层的onTouchMoved(),onTouchEnded()可以接收到消息,但是本层之下的其它层不能再接收到消息
1.2 使用示例
在Layer中添加如下代码,并重载onTouchxxx函数
ps:
listener->setSwallowTouches(true),不向下触摸,简单点来说,比如有两个sprite ,A 和 B,A在上B在下(位置重叠),触摸A的时候,B不会受到影响;
listener->setSwallowTouches(false)反之,向下传递触摸,触摸A也等于触摸了B;
Cocos2dx Lua 单点触摸事件
Link: http://codepad.org/WqK2Sqak [ raw code | fork ] 
local BaseMap=class("BaseMap",function()
return cc.Layer:create()
end) BaseMap.init=function(self)
self._size=cc.Director:getInstance():getVisibleSize()
self._mapres=""
self._level=
end BaseMap.setTouchEnable=function(self,enable)
local function onTouchBegin(touch, event)
self:onTouchBegin(touch:getLocation())
end local function onTouchEnd(touch, event)
self:onTouchEnd(touch:getLocation())
end if enable == true then
local listener = cc.EventListenerTouchOneByOne:create()
listener:registerScriptHandler(onTouchBegin,cc.Handler.EVENT_TOUCH_BEGAN )
listener:registerScriptHandler(onTouchEnd,cc.Handler.EVENT_TOUCH_ENDED )
local eventDispatcher = self:getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listener, self)
end
end BaseMap.onTouchBegin=function(self,touch) end BaseMap.onTouchEnd=function(self,touch) end return BaseMap
2、多点触摸
- 触摸事件 (EventListenerTouch)
 - 键盘响应事件 (EventListenerKeyboard)
 - 加速记录事件 (EventListenerAcceleration)
 - 鼠标响应事件 (EventListenerMouse)
 - 自定义事件 (EventListenerCustom)
 
以上事件监听器统一由 _eventDispatcher 来进行管理。
1.优先级越低,越先响应事件
2.如果优先级相同,则上层的(z轴)先接收触摸事件
有两种方式将 事件监听器 listener 添加到 事件调度器_eventDispatcher 中:
(1)addEventListenerWithSceneGraphPriority 的事件监听器优先级是0,而且在 addEventListenerWithFixedPriority 中的事件监听器的优先级不可以设置为 0,因为这个是保留给 SceneGraphPriority 使用的。这里当我们再次使用 listener 的时候,需要使用 clone() 方法创建一个新的克隆,因为在使用 addEventListenerWithSceneGraphPriority 或者 addEventListenerWithFixedPriority 方法时,会对当前使用的事件监听器添加一个已注册的标记,这使得它不能够被添加多次。
clone实现:
(2)另外,有一点非常重要,FixedPriority listener添加完之后需要手动remove,而SceneGraphPriority listener是跟node绑定的,在node的析构函数中会被移除。
addEventListenerWithFixedPriority listener 移除方法:
| 
 1 
 | 
dispatcher->removeEventListener(listener); | 
【Cocos2dx 3.3 Lua】触屏事件的更多相关文章
- cocos2d-x触屏事件(单点触屏)
		
转自:http://blog.csdn.net/onerain88/article/details/7550009 一般经常用到的触屏的情况有两种:一种是Layer统一接收触屏消息,然后由程序根据需要 ...
 - cocos2dx基础篇(7) 触碰事件
		
cocos2dx游戏引擎的重点是在于移动设备的跨平台开发,而移动设备上的游戏大部分都是通过屏幕触碰来进行的.比如主菜单的按钮触碰,打飞机中飞机的触碰移动,都需要用到触碰操作.想一想之前讲的菜单按钮CC ...
 - 转:Android随笔之——使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
		
本文转载自CSDN的jzj1993,原文连接:http://blog.csdn.net/jzj1993/article/details/39158865 有时我们需要使用安卓实现在后台模拟系统按键,比 ...
 - HTML5学习总结-09 拖放和手机触屏事件
		
一 拖放 拖放(Drag 和 drop)是 HTML5 标准的组成部分.拖放是一种常见的特性,即抓取对象以后拖到另一个位置.在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放. 课程参考 ht ...
 - (转)js的左右滑动触屏事件
		
原文:http://blog.sina.com.cn/s/blog_6a0a183f0100zsfk.html (2012-01-20 08:55:53) 转载▼ 标签: 移动设备 触屏事件 杂谈 分 ...
 - [IOS]自定义长触屏事件
		
写一个Demo来自定义一个长触屏事件,自定义长按手势. 实现步骤: 1.创建一个自定义手势类,命名为LongPressGestureRecognizer,在创建的时候继承UIGestureRecogn ...
 - js触屏事件
		
js的左右滑动触屏事件,主要有三个事件:touchstart,touchmove,touchend.这三个事件最重要的属性是 pageX和 pageY,表示X,Y坐标. touchstart在触摸开始 ...
 - 移动端touch触屏滑动事件、滑动触屏事件监听!
		
一.触摸事件 ontouchstart.ontouchmove.ontouchend.ontouchcancel 目前移动端浏览器均支持这4个触摸事件,包括IE.由于触屏也支持MouseEvent,因 ...
 - Android:触屏事件
		
Android触屏事件包含两种: 1)屏幕触屏事件:重写onTouchEvent(MotionEvent event): 2)控件触屏事件:给控件注册触屏事件,setOnTouchEventListe ...
 - 从零开始学 Web 之 移动Web(二)JD移动端网页,移动触屏事件
		
大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...
 
随机推荐
- cnBlogs博客推荐
			
数据结构和算法若可以称为为编程的细胞结构,那设计模式就是编程的灵魂气脉. 一个从是编程的微观演绎,一个是编程的宏观设计.这个从技术和艺术的结合体,毫无疑问是在世界末日之前的很伟大的一项发明. 设计 ...
 - win7 开机自启动控制
			
直接用win+r运行 --- 输入 msconfig 去除“OneNote”开机自启动方法:取消勾选,点击 “应用” ,然后点击“确定” 即可
 - OGG遇到相关问题汇总
			
OGG初始化加载数据时遇到的问题 1.target端拒绝source端访问 2016-12-13 14:31:03 INFO OGG-00963 Oracle GoldenGate Manager f ...
 - sencha touch 开发环境搭建(视频)
			
图文文章参见: http://www.cnblogs.com/mlzs/p/3420900.html 视频共享链接 百度:http://pan.baidu.com/s/1mg5DpS8
 - sencha touch 视图(view) activate与deactivate事件探讨
			
在sencha touch2.2中采用card布局 之前的需求是考虑show,hide事件发现不可取 http://www.cnblogs.com/mlzs/archive/2013/06/13/31 ...
 - sencha touch 压缩js,css遇到的问题
			
在使用工具压缩css和jss时,我遇到了以下问题 1. showBtn: { tap: function (t, value) { this.redirectTo(t.config.goto); } ...
 - 跟bWAPP学WEB安全(PHP代码)--邮件头和LDAP注入
			
背景 由于时间限制和这俩漏洞也不是特别常用,在这里就不搭建环境了,我们从注入原来和代码审计的角度来看看. 邮件头注入 注入原理: 这个地方首先要说一下邮件的结构,分为信封(MAIL FROM.RCPT ...
 - ansible的优化
			
Ansible企业实战环境中,如果管理的服务器越来越多,Ansibe执行效率会变得比较慢,可以通过优化Ansible提供工作效率,由于Ansible基于SSH协议通信,SSH连接慢会导致整个基于Ans ...
 - 未能加载文件或程序集“XX.XXX.Web”或它的某一个依赖项。试图加载格式不正确的程序
			
IIS应用程序池->右键高级设置->启用32位应用程序 设置为true
 - 【转】Hudson插件Email-Ext邮件模板时间格式化的解决方法
			
原文地址:http://www.cnblogs.com/haycco/archive/2012/03/20/3031397.html 最近因对Hudson版本进行了升级为2.2.0,所以各方面都在搞项 ...