Cocos2d-x的学习 触碰事件老版本和新版本的对比 第三节
来源:互联网 发布:海岛奇兵13本升级数据 编辑:程序博客网 时间:2024/05/01 06:18
版本:cocos2d-x 2.2.2 语言:C++
快要到周末了,这边还有个漫展,有点想去,但周末还是在家打打游戏比较舒服就算了。
昨天加班到近10点半那,现在感觉好累。然后第一节的遗留问题的讲解是会有的,我大概知道思路了,下个星期一分享给大家哦。
这次我要讲的是2.0版本中的触碰事件,其实2.0和3.0都差不多,只不过3.0可以使用lambda表达式直接传函数进去。
直接来看看我们的CCLayer中的方法吧:
不管是单点触碰还是多点触碰也都是有的。继承CCLayer,重写一些这些方法,再setTouchEnable(true)就可以使用了。
或者就是这么玩:
有点像3.0的处理吧,但是3.0中传入的是listener,也就是说把事件源和监听的listener给分开了。(当年2.0的代码确实不太规范的感觉啊)
嗯,这时候大家是不是很好奇setTouchEnable这个方法,它究竟做了什么,直接去看源代码:
看到这边我们恍然大悟,不过还是要继续追踪下去:
这厮的效果就是我们获取事件分发器,然后注册啊,我潜意识中一直以为只把其中的一个变量改变了。这样就OK了。
今天就到这里。。。结束了?不,没有,这里我还想讲一下Menu中怎么处理其子类项的,创建的时候大家都应该传了一个函数进去吧。
在我这边的项目中,直接调用个方法传递名称、坐标、tag就会给我们创建一个Menu出来,而且他的Touch事件都会在callbackBt中处理,有点神奇,反正只要调用方法就行了,也不用设置什么。
然后进入该方法的处理,我们就一目了然了:
这边帮忙把callbackBt给绑定了一下,然后继续追踪:
这边就进入的cocos的CCMenuItem类了。用sel传入了对应的处理函数。一路追下去,发现了一个奇怪的东西:
初始化的时候,他把处理函数放到了一个成员变量m_bSelected。什么鬼,按照我们的想法不是直接用事件分发器注册一下吗?
我直接在callbackBt中断了个点,往上看:
这边调用了处理函数,继续:
看到这边,想必大家都懂了吧,一样的。TouchEnded的时候调用保存在里面的函数,并将本MenuItem传递进去。有点意思吧。
另外说一句,在3.0版本中MenuItem的处理方式也是一样的。哦,对了,Lua中也是可以使用这种方法的,上一节中只是使用了另一种方法。具体2.0和3.0触碰事件的区别,请看总结。
总结:
今天要求简洁:2.0事件源和监听接口没分开,3.0分开了。
- Cocos2d-x的学习 触碰事件老版本和新版本的对比 第三节
- Cocos2d-x的学习 触碰事件老版本和新版本的对比 第一节
- Cocos2d-x的学习 触碰事件老版本和新版本的对比 第二节
- Cocos2d-x的学习 触碰事件老版本和新版本的对比 第四节
- AFN老版本和新版本的分别使用
- cocos2d-x的触碰事件
- cocos2d-x的多点触碰事件
- 【cocos2D-x学习】15.cocos2d-x 2.0 版本的 ShatteredSprite
- onvif新版本发现不了老版本onvif的ipc问题
- 【objc】基础结构objc_class的布局,老版本vs新版本
- 老版本向新版本u3d转换的几个问题
- 关于vs老版本转换新版本的一些问题
- 重新学习COCOs2D-X版本2.2.3开始---第一篇引擎的游戏入口
- unity3d中两种语言的对比JavaScript vs C# 第三节
- Cocos2d-x setContentSize后一个奇怪的现象,老版本的失误
- PHP学习第三节----function的参数
- java 学习第三节--this的用法
- Box2D和Chipmunk的对比 Cocos2d-x物理引擎
- Origin字段
- ofbiz 本地化及邮件设置126邮箱
- 出现error:The type java.lang.Object cannot be resolved. It is indirectly referenced from required .cla
- Prism应用开发(一)—— 概述
- hdu 3416 Marriage Match IV【SPFA+最大流Dinic】
- Cocos2d-x的学习 触碰事件老版本和新版本的对比 第三节
- 思路整理 -- 经典语录
- C++拷贝构造函数详解
- 1000: 数塔
- 前端同学大福利,最全的面试题目整理
- hdu 5821 Ball
- [iOS]关于状态栏(UIStatusBar)的若干问题
- 戏说 ofbiz 权限组 角色 控制
- [李景山php]每天laravel-20161011|Validator.php-11