您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx游戏开发触摸中的陷阱

2014-01-13 15:26 246 查看


触摸机制其实并不复杂 但是如果不理解其原理 很容易造成触摸陷阱

第一个陷阱:接受触摸事件的对象不一定正显示在屏幕中 触摸分发器和引擎中的渲染是相互独立的 所以并不关心触摸代理是否显示在屏幕上 因此在实际开发中 应该讲不需要触摸事件的对象从触摸分发器中删除 尤其是自己定义的触摸对象 而CCLayer也是在所在场景切换的时候 才会从触摸分发器中将自己删除 所以在一个场景中不同游戏层之间互相切换时候 也需要将不需要的层从触摸分发器中删除 防止没有及时删除的层依然接受触摸事件 而改变了所属层中的节点对象的属性发生改变
导致意外发生

第二个陷阱:CCTargetedTouchDelegate 尽管每次只传入一个触摸点 也只有在开始阶段被声明的触摸点后续才会传入 但是这并不是意味着只会接受一个触摸点 主要被声明的触摸点都会传入 而且可能顺序是乱序的 因此 一个良好的习惯就是再使用CCTargetedTouchDelegate声明一个触摸点 针对一个触摸做处理即可 这个是一个特殊的触摸事件 按优先级投递事件 优先级高的对象有权吞噬触摸事件 以阻止把事件继续分发给其他对象 通常我们游戏中弹出的对话框就是一个吞噬对象
可以让其他的对象无法接受事件 对于有多触摸点的时候 带目标的分发器会把每一个触摸点逐个分发 其实也就是意味着每分发的消息只含有一个触摸点的信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: