cocos2dx游戏开发触摸中的陷阱
2014-01-13 15:26
246 查看
触摸机制其实并不复杂 但是如果不理解其原理 很容易造成触摸陷阱
第一个陷阱:接受触摸事件的对象不一定正显示在屏幕中 触摸分发器和引擎中的渲染是相互独立的 所以并不关心触摸代理是否显示在屏幕上 因此在实际开发中 应该讲不需要触摸事件的对象从触摸分发器中删除 尤其是自己定义的触摸对象 而CCLayer也是在所在场景切换的时候 才会从触摸分发器中将自己删除 所以在一个场景中不同游戏层之间互相切换时候 也需要将不需要的层从触摸分发器中删除 防止没有及时删除的层依然接受触摸事件 而改变了所属层中的节点对象的属性发生改变
导致意外发生
第二个陷阱:CCTargetedTouchDelegate 尽管每次只传入一个触摸点 也只有在开始阶段被声明的触摸点后续才会传入 但是这并不是意味着只会接受一个触摸点 主要被声明的触摸点都会传入 而且可能顺序是乱序的 因此 一个良好的习惯就是再使用CCTargetedTouchDelegate声明一个触摸点 针对一个触摸做处理即可 这个是一个特殊的触摸事件 按优先级投递事件 优先级高的对象有权吞噬触摸事件 以阻止把事件继续分发给其他对象 通常我们游戏中弹出的对话框就是一个吞噬对象
可以让其他的对象无法接受事件 对于有多触摸点的时候 带目标的分发器会把每一个触摸点逐个分发 其实也就是意味着每分发的消息只含有一个触摸点的信息
相关文章推荐
- 基于Cocos2d-x游戏引擎实战开发炸弹超人
- cocos2d-x 中使用tolua++来导入自己编写的C++ 类
- cocos2d-x 通过python模板方式新建支持lua的工程
- CCLabelTTF之换行
- cocos2dx环境配置及打包apk
- cocos2dx一tab选项卡的实现
- 【cocos2d-x入门实战】微信飞机大战来袭!
- JniHelper调用java静态和非静态方法总结(即cocos2dx中调用android平台下显示第三方广告)
- cocos2d-x 通过JNI实现c/c++和Android的java层函数互调
- cocos2d-x-3.0beta使用Python 创建Cocos2d-x 项目和编译Android 项目
- cocos2d-x Ubuntu安装
- Cocos2d-x3.0(一)Cocos2d-x3.0简介以及创建新的Cocos2d-x跨平台工程
- cocos2dx Beta 使用动画
- [cocos2d-x]对CCSprite进行高斯模糊
- [cocos2d-x]对CCSprite进行高斯模糊
- 【cocos2d-x】对CCSprite进行高斯模糊
- cocos2dx Beta 版中使用 cocostudio
- Cocos2d-x 3.X CMake MinGW版本编译运行
- 【Cococs2d-x】通过TexturePacker加密图片资源(Cocos2d-x方式)
- Cocos2d (v.3.0) rendering pipeline roadmap