Cocos2d-x 3.0开发(三)点击交互的四种处理
来源:互联网 发布:声音模拟软件下载 编辑:程序博客网 时间:2024/06/05 10:39
转自:http://blog.csdn.net/fansongy/article/details/12716671
版权声明:本文为 松阳 (blog.csdn.net/fansongy) 原创文章,转载务必注明出处。
目录(?)[+]
1、概述
2、四种点击
1、函数回调
其中CC_CALLBACK_1宏是将函数与对象绑定在一起,1表示这个函数有一个参数。当点击这个按钮时,会调用这个回调函数。
除了基于c++11的这个形式的改变,使用方法与先前相同。
此种方式已经被舍弃,可以使用第四种方法做替代。
2、Layer的touch消息响应
虽然重写了底层的dispatch,但对这层的使用影响并不大。我们同样需要重写:
重写这些函数来对layer的点击做处理。当然,我们需要:
此外有个小改动。对于单点触控响应,可以调用:
进行设置,而不需要再用设置Delegate的方式来做了。
3、TouchEvent响应
因为所有的UIWidget都要添加到UILayer上,而UILayer通常作为UI的Widget都会在最上层,所以可以“基本上”认为这种使用方式会优先于其他方式处理点击消息。因为UILayer也会有层级的改变,比如它和MenuItem之间的关系。所以说“基本上”。
4、Listener消息响应方式
这种实现也是新加入的。它更像是点击的一个层次过滤器。点击时,在listener队里中进行过滤。每一个listener检查自己保存的touch消息响应是否会被触发。一层一层过滤,最后在到Layer的touch消息响应。
我觉得它的设计的初衷是为任意sprite提供一套自己制定的点击响应。但这样的实现仍然要写很多条件判断,没有能够控件化。可能我的理解有些偏差,欢迎讨论。
它被设计成一个全局点击响应控制。具体的用法大致是这样:
其原理是在dispatcher中检查listener列表,例如myListener或加进来的其他listener。然后每个listener检查自己中的Item看能否达到检查条件,例如:mySprite1,mySprite2。然后执行相应的操作。但这样的话,当控件很多的时候,每一次事件都进行这种双链表的检查操作不知会不会影响些性能?
3、实例
光说不练假把式,于是就动手写了一个上面的Demo:
点击背景区域可以移动整个场景,点击蓝色小方块可以半透明移动它,点击蓝色按钮可以更改文字,显示状态。点击右下角按钮退出程序。
项目配置可参照:
Cocos2d-x 3.0 开发(十六)cocos2dx-3.0beta版建立新项目并加载CocoStudio导出文件
4、总结
根据不同的交互需要,选择不同的实现方式,会更有利于我们的维护和扩展,相应例子可以在下面下载。
Demo下载:http://download.csdn.net/detail/fansongy/6399291 不要资源分,觉得好劳烦点下 “顶” ~
Demo For Beta2 下载:http://download.csdn.net/detail/fansongy/6892047
本篇博客出自阿修罗道,转载请注明出处,禁止用于商业用途:http://blog.csdn.net/fansongy/article/details/12716671
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- Cocos2d-x 3.0开发 点击交互的四种处理
- Cocos2d-x 开发 点击交互的四种处理
- ocos2d-x 3.0开发(三)点击交互的四种处理
- 关于cocos2d-x 3.0的点击交互处理
- 点击交互的四种处理
- 点击交互的四种处理
- Cocos2d-x开发网络游戏(四) 处理网络线程
- Cocos2d-x开发网络游戏(四) 处理网络线程
- Cocos2d-x开发系列 交叉开发模式四 C++和Lua的数据交互
- cocos2d-x处理点击事件的机制
- Cocos2d-x开发系列 HYBrid模式四 C++和Lua的数据交互
- Cocos2d-x事件交互处理(触摸处理)
- 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
- 【Cocos2d-x游戏开发】解决Cocos2d-x中文乱码的三种方法
- spring tool suite 项目代码没有错误,但项目名字上报红叉
- 磁珠和电感的区别
- react 中使用antv 生成柱状图
- hadoop中的shuffle过程(combine->partition)
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- Cocos2d-x 3.0开发(三)点击交互的四种处理
- 版本控制
- Python3教程Web开发实战梳理-day12(编写日志列表页)
- 贝塞尔曲线原理分析及其Android的实现
- 控件的滚动实现
- php 正则
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->Web版本新增新的角色授权管理界面效率更高、更规范
- 橙色预警:Oracle游标泄露(open_cursor耗尽)
- Linux中Cron任务间隔执行:每隔几分钟/几小时/几天