- 浏览: 261764 次
- 性别:
- 来自: 大连
文章分类
最新评论
cocos2d把响应事件的对像放入一个栈中,用先进后出的规率来响应事件。可以设置响应的优先级 -128 - 128,最上层的优先级是-128(即值越小越先响应事件)。
响应的规则:
不同优先级先按优先级响应(即无视入栈顺序,先按优先级响应)
同一优先级响应的顺序是先进后出。
同一对像不能多次入栈,必须先从栈中移除才能再次加入。(也可能是最高响应等级的不能多次入栈)
如果当前对像有优先响应顺序但没有响应事件,则会分发到后面的对像。
问题
CCMenu对像的默认的优先级是-128(即最高响应级别),CClayer的默认响应级别是0,所以同时存在的情况下CCMenu总是先响应触摸事件,并阻止层接收触摸事件,杯具的是新增一个面板层覆盖在CCMenu按钮上方依然会被下面的按钮接收到触摸事件。
解决
基于cocos2d的事件响应规律我们知道新增的层要接收到触摸事件并阻止冒泡必须有大于CCMenu的优先级,或等于CCMenu的优先级但后入栈,即在每次层打开时重设为最高优先级。
代码如下:
这里只是设置了优先级,还必须要响应事件才能阻止分发。如下代码,响应但不做操作即可
另外需注意的事件
如果新增的层或其它对像中包含有CCMenu对像,因为该层被设为了最高优先级且阻止冒泡,该层上的CCMENU也不能响应事件了。这时只需要再将CCMenu对像用最高优先级重新入栈一次即可
响应的规则:
不同优先级先按优先级响应(即无视入栈顺序,先按优先级响应)
同一优先级响应的顺序是先进后出。
同一对像不能多次入栈,必须先从栈中移除才能再次加入。(也可能是最高响应等级的不能多次入栈)
如果当前对像有优先响应顺序但没有响应事件,则会分发到后面的对像。
问题
CCMenu对像的默认的优先级是-128(即最高响应级别),CClayer的默认响应级别是0,所以同时存在的情况下CCMenu总是先响应触摸事件,并阻止层接收触摸事件,杯具的是新增一个面板层覆盖在CCMenu按钮上方依然会被下面的按钮接收到触摸事件。
解决
基于cocos2d的事件响应规律我们知道新增的层要接收到触摸事件并阻止冒泡必须有大于CCMenu的优先级,或等于CCMenu的优先级但后入栈,即在每次层打开时重设为最高优先级。
代码如下:
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:kCCMenuMousePriority swallowsTouches:YES]; //当前层最先接收事件并阴止冒泡
这里只是设置了优先级,还必须要响应事件才能阻止分发。如下代码,响应但不做操作即可
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event { NSLog(@"scoreListPanel:cctouchBegan"); return YES; }
另外需注意的事件
如果新增的层或其它对像中包含有CCMenu对像,因为该层被设为了最高优先级且阻止冒泡,该层上的CCMENU也不能响应事件了。这时只需要再将CCMenu对像用最高优先级重新入栈一次即可
[[CCTouchDispatcher sharedDispatcher] removeDelegate:sysMn]; [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:sysMn priority:kCCMenuMousePriority swallowsTouches:YES];
发表评论
-
cocos2d 在玩游戏的时候不进入待机模式
2012-04-11 10:19 920[UIApplication sharedApplicatio ... -
如何设置touch的响应层或吸收终端层
2012-03-07 22:44 0[[CCTouchDispatcher sharedDis ... -
将UIImage中像素的黑色转成透明色
2012-03-07 22:22 0void ProviderReleaseData ... -
cocos2d添加输入框
2012-02-23 17:33 0添加输入框,因此搜了一下找了这个方法 [[[[CCDirec ... -
debug模式调试
2012-02-20 10:59 0-(void) dealloc{ CCLOG(@&qu ... -
随机在屏幕上产生一个坐标点
2012-02-20 10:28 0//根据某个数字随机产生一个坐标点 - (CGPoint ... -
判断触摸点是否与精灵碰撞
2012-02-20 10:28 0//碰撞检测 - (BOOL) circle:(CGPo ... -
iphone开发基础:【object-c系列教程完毕】
2011-10-25 11:11 1378iphone开发基础:【object-c系列教程完毕】 接下来 ... -
(转)把两个Layer融合成一个UIImage的截图方法
2011-09-27 10:15 3483//layer1 CCLay ... -
cocos2d 使用 NSThread
2011-09-26 14:43 847-(void)toR_therd:(id) sender ... -
NSNotificationCenter
2011-09-26 14:23 1069定义一个消息中心 [[NSNotification ... -
box2d 中设置界面大小的函数
2011-09-09 10:52 867-(void)activePageWhenEnterIn; ... -
设置 cocos2d 的音效回放参数
2011-09-09 00:05 1469cocos2d 回放音效的默认设置是 44Khz,但 iPho ... -
另一种实现 Fruit Ninja 里刀
2011-09-08 23:57 932实现原理: 画直线 在一个 list 列表里记 ... -
CCLayer
2011-09-08 23:52 3129一个场景(Scene)上可能有多个Layer 引用CCLaye ... -
Scene
2011-09-08 23:50 1009scene永远是一个场景上的根节点 引用scene(即 CCS ... -
定时消息 update:方法
2011-09-08 23:48 1591scheduleUpdate方法会执行update:方法,每帧 ... -
CCAction
2011-09-08 23:46 1075Node可以执行Action 声明并运行action CC ... -
CCNode
2011-09-08 23:44 1141CCNode是所有节点的父类包括(Layer, Sprite, ... -
CCDirector
2011-09-08 23:43 2557首先接触到的是CCDirector类,顾名思义是2d动画的导演 ...
相关推荐
在使用cocos2d-x开发游戏的过程中,为了实现逻辑和显示相分离。 在下通宵了一个晚上,写出了该事件类。 谨记,该事件只能用于cocos2d-x中。 事件发送者需要继承EventDispatcher类 事件接收者需要继承EventHandle类...
cocos2d事件响应总结,包括sprite,layer等,响应事件的原理和一些容易发生的问题!
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门 cocos2d入门
该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...
cocos2d-x-2.1.5
第1章 开始前的准备工作 1 第2章 你的第一款iPhone游戏:垂直射击游戏 38 第3章 Cocos2D核心类 69 第4章 Cocos2D中的动作、特效与动画 152 第5章 Cocos2D中的文本渲染系统 229 共19章
cocos2d-x游戏代码
Ray Wenderlich的《Cocos2d SimpleGame》,被认为是cocos2d的初学者最好的教程,这本书被Cocos2D-X团队从objective-c转化到了c++版,并发布在了github上。在此感谢Ray Wenderlich的慷慨相助。 源代码是在cocos2d-x ...
cocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML文件读取与骨骼动画.rarcocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML...
Cocos2d-x实战 JS卷 Cocos2d-JS开发 PDF 电子书完整版本
Cocos2d-x源于Cocos2d,是一款开源游戏引擎项目,是一款基于对原有iOS平台cocos2d重写为C++的开源代码,封装了OpenGL,Box2d,LibCurl,LibPng等开源的跨平台代码。由于基于C++和STL特点使其广泛应用于游戏开发、移动...
Cocos2d-x是移动跨平台开发最流行的游戏引擎,而本书是一本很全面的、比较‘接地气’的游戏开发教程。书中汇聚了热门手机游戏《捕鱼达人》开发的实战经验,作者从最基础的内容开始,逐步深入地介绍了Cocos2d-x的相关...
如果你想用cocos2d开发android游戏,但是又不方便找包,这里就可以为你提供cocos2d开发的所有相关包,解压后得到libs文件夹即可。
cocos2d-x 3.0 人物行走 . 包里有代码和 图片资源.
Cocos2d-x实战
cocos2d的学习资料,一本比较经典的cocos2d开发书,适合cocos2d/cocos2d-x的入门
cocos2d-objc-ext, Cocos2D iphone的扩展和实用程序类 Cocos2D扩展cocos2d-iphone的扩展和实用程序类。cocos2d-iphone-ext,将包括不同的类和库,而不是suitet发布的官方 cocos2d-iphone 。 一些类最初可以能会被...
Cocos2D-x游戏开发之菜单事件响应 Cocos2D-x游戏开发之菜单事件响应
本书根据大富翁项目一一展开讲解游戏开发过程中涉及的各方面内容,读者可以通过这个游戏的开发,全面掌握Cocos2d-x游戏开发的方法和技巧。 本书理论和实践相结合, 资源太大,传百度网盘了,链接在附件中,有需要的...