关于cocos2dx3.X版本的触摸响应的…
2015-10-20 15:22
351 查看
相比2.X版本,触摸响应的处理方式差别还挺大的。
之前2.x的写法是:先在Layer中打开触摸开关(setTouchEnabled(true)),
然后重写registerWithTouchDispatcher()以及3个触摸处理函数。
2.x的方法很简单,而3.x则要复杂一些,刚接触时还真有点不习惯。如下:
1. 定义一个事件倾听器
2.对事件倾听器进行设置,主要是设置setSwallowTouches()和3个触摸处理函数。setSwallowTouches用于设置是否吞没事件,也就是当某个触摸事件回调的时,截断该事件,让它不能继续传递给其他人。后面结合例子说明。3.将事件倾听器与目标绑定,目标可以是精灵,层等。
这样就完成了触摸响应的所有步骤,相比2.x的一点差异就是将触摸和目标绑定在一起,而目标可以在事件中取出。
这样一来对莫个触摸区域的判断就方便得多了(比如要判断触摸点是否在目标精灵上)。回头说一下setSwallowTouches()函数,一开始一直没弄懂是什么意思,后来实践后才明白。比如下图的纸牌游戏,
纸牌之间相互重叠,如果不设置触摸优先级,则点击重叠部分(尽管下面的被遮住了),两张牌都会被选中。
我们在绑定目标的时候其实已经设置了触摸的优先级。
这个函数会自动按照节点的绘图层设置优先级,即最上面最优先。但是除了设置优先级还不够,还需要设置吞没事件,当setSwallowTouches()传入参数为true时,一旦事件被处理了,则不会传递给下一优先级的触摸倾听。而这个“事件被处理了”取决于你的onTouchBegan()函数是否返回true。另外再说一个,有多个精灵有同样的触摸处理函数,可以直接用
而不需要重新编写事件倾听器,clone()函数会自动复制原倾听器的处理函数。
之前2.x的写法是:先在Layer中打开触摸开关(setTouchEnabled(true)),
然后重写registerWithTouchDispatcher()以及3个触摸处理函数。
2.x的方法很简单,而3.x则要复杂一些,刚接触时还真有点不习惯。如下:
1. 定义一个事件倾听器
2.对事件倾听器进行设置,主要是设置setSwallowTouches()和3个触摸处理函数。setSwallowTouches用于设置是否吞没事件,也就是当某个触摸事件回调的时,截断该事件,让它不能继续传递给其他人。后面结合例子说明。3.将事件倾听器与目标绑定,目标可以是精灵,层等。
sprListener,poker);
这样就完成了触摸响应的所有步骤,相比2.x的一点差异就是将触摸和目标绑定在一起,而目标可以在事件中取出。
bool pokerOfPlayer::selectPoker(Touch *pTouch, Event* pEvent){ auto target=static_cast(pEvent->getCurrentTarget());//...}
这样一来对莫个触摸区域的判断就方便得多了(比如要判断触摸点是否在目标精灵上)。回头说一下setSwallowTouches()函数,一开始一直没弄懂是什么意思,后来实践后才明白。比如下图的纸牌游戏,
纸牌之间相互重叠,如果不设置触摸优先级,则点击重叠部分(尽管下面的被遮住了),两张牌都会被选中。
我们在绑定目标的时候其实已经设置了触摸的优先级。
sprListener,poker);
这个函数会自动按照节点的绘图层设置优先级,即最上面最优先。但是除了设置优先级还不够,还需要设置吞没事件,当setSwallowTouches()传入参数为true时,一旦事件被处理了,则不会传递给下一优先级的触摸倾听。而这个“事件被处理了”取决于你的onTouchBegan()函数是否返回true。另外再说一个,有多个精灵有同样的触摸处理函数,可以直接用
sprListener->clone(),poker);
而不需要重新编写事件倾听器,clone()函数会自动复制原倾听器的处理函数。
相关文章推荐
- 关于TileMap(瓦片地图)
- 关于COCOS2d里CCArray使用时的一点…
- Cocos2d-JS项目之四:UI界面的优化
- Cocos2d-JS项目之三:使用合图
- Cocos2d提供的字体!共57种(有对照的字体图)
- Cocos2d-x 3.x——AnchorPoint 和Position 关系
- Cocos2d-x3.2与OpenGL渲染总结(一)Cocos2d-x3.2的渲染流程
- mac搭建cocos2d-x安卓开发环境
- cocos2d中让视角根据主角精灵移动
- cocos2dx 3.x win7+VS2012开发环境搭建及HelloWorld
- cocos2dx 3.x打包出现Can't find config file .cocos-project.json in path
- 第一篇(详解cocos2d-x中宏CC_DLL)
- cocos2d-x Tests讲解三:Particle System(粒子系统)
- c++自定义消息管理机制(类似cocos2d-x的实现方式)
- cocos2d-x sqlite的读取和相关操作
- 记录quick cocos2d-x3.2升级至cocos2d-x3.8
- 【复习笔记】 cocos2d-x 2.x 渲染特效实现 三 高斯模糊效果一
- cocos2d-JS开发环境搭建
- Cocos2d-x 3.x RenderTexture渲染纹理源码分析
- cocos2d-x和Android学习思考