Cocos2d-x3.0触摸
cocos2d-x 3.0開始採用C++11,并開始脱离OC风格,在触摸处理上也作出了改变
C++11带来了Lambda表达式(匿名函数),它将简化程序编写,可使代码更清晰易懂
在旧2.x版本号的触摸机制之中,是须要重写相关虚函数
在新的版本号中,触摸机制进行了改动,你能够随时改动事件对象,还能够使用Lammbda表达式(匿名函数),还能够移除监听器等
--------------------------------------------------------
事件监听器:封装您的事件处理代码。
事件调度程序:通知用户事件的监听器。
事件对象:包括关于事件的信息。
--------------------------------------------------------
创建监听器
///创建单击事件监听者 ( EventListenerTouchAllAtOnce 则是多点)
auto touchListener=EventListenerTouchOneByOne::create();
///setSwallowTouches 使当前层的touch事件不会传递给它之下的层
touchListener->setSwallowTouches(true);
事件对象绑定
///Lambda表达式 PS:这里的[=] 代表 截取外部作用域中全部变量,并拷贝一份在函数体中使用,详情能够翻阅其它资料
touchListener->onTouchBegan=[=](Touch* touch, Event* evnet)
{
cocos2d::Point s_PLocation=touch->getLocation();
addSpriteAtArcRandom(s_PLocation);
return true;
}; ///C++11 bind模板函数(事实上也就是CC_CALLBACK_XX宏)
touchListener->onTouchEnded=std::bind(&HelloWorld::onTouchEnded, this,std::placeholders::_1,std::placeholders::_2);
touchListener->onTouchMoved=std::bind(&HelloWorld::onTouchMoved, this,std::placeholders::_1,std::placeholders::_2);
将事件监听器增加调度器中
auto dispatcher=Director::getInstance()->getEventDispatcher();
///加入事件监听器,并设置优先级,PS:既然有加入,当然有移除(removeEventListeners(指定对象),removeEventListenersForType(指定类型)等),嘿嘿, 比曾经方便了不少
dispatcher->addEventListenerWithFixedPriority(touchListener, 1);
(1)addEventListenerWithSceneGraphPriority:注冊监听事件,监听优先级按绘制顺序来
(2)addEventListenerWithFixedPriority:注冊监听事件,能够设置事件的监听的优先级别
(3)addCustomEventListener:注冊自己定义监听事件,而且监听优先级固定为1
可參考: http://www.cocos2d-x.org/docs/manual/framework/native/input/event-dispatcher/en
Cocos2d-x3.0触摸的更多相关文章
- Cocos2D v2.0至v3.x简洁转换指南(二)
触摸处理 我们在稍后将完成Cocos2d 3.0中触摸处理的完整教程.而现在最重要的是知道如何去启用触摸处理在你的CCNode中: self.userInteractionEnabled = TRUE ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(六)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 掩饰一个精灵:实现代码 打开HelloWorldLayer.m并 ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(一)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 原帖来自Ray Wunderlich写的精彩的文章 How To ...
- Cocos2D v2.0至v3.x简洁转换指南(三)
Cocos2D 3.3中的注意事项 如果你在使用Cocos2D 3.3+(是SpriteBuilder 1.3+的一部分)你将不得不替分别的换所有存在的UITouch和UITouchEvent为CCT ...
- 如何将各种低版本的discuz版本升级到discuz x3.0
最近在做discuz改版的项目,遇到了很多问题,相信很多拥有discuz论坛的版主,站长和程序猿在升级或改版discuz的过程中遇到过和我一样的问题,所以我开了一个discuz专栏,为大家讲解一下di ...
- cocos2d 2.0和UIKit混合编程, Push CCDirector的时候出现黑屏的天坑
症状 使用cocos2d 2.0和UIKit混合编程, 有一块用cocos2d编写的小程序, 将CCDirector push到一个UINavigationController里面. 虽然事先在后台初 ...
- cocos2d-x3.0创建第一个jsb游戏
第一步: 最新的cocos2d-x.下载地址https://github.com/cocos2d/cocos2d-x github上最新的引擎,值得注意的是官网上发布的引擎是稳定版.选择哪种就看个人喜 ...
- cocos2d 3.0自定义事件答疑解惑
疑惑一:在事件分发中修改订阅者 ,对于这个的理解. 事件的分发是可以嵌套的,cocos2dx使用_inDispatch来保存当前嵌套的深度,当调用第一个dispatchEvent的时候,_inDisp ...
- [iOS UI进阶 - 3.0] 触摸事件的基本处理
A.需要掌握和练习的 1.介绍事件类型2.通过按钮的事件处理引出view的事件处理3.响应者对象 --> UIResponder --> UIView4.view的拖拽* 实现触摸方法,打 ...
随机推荐
- Python的模块调用
目前运维的Python脚本,是用于同步数据的,分别有n个不同的脚本同步不同的数据,而不同的脚本连接的数据库是一致的,每个脚本都重复写这个数据库连接信息. 这导致测试时,从生产环境切换到测试环境时,需多 ...
- ubuntu 文档查看器/gedit查看txt中文乱码问题
文档查看器界面是中文的,但查看pdf文档只显示英文,中文都空了出来. 用命令: sudo apt-get install poppler-data 解决该问题. gedit查看txt中文乱码问题 打开 ...
- HttpWebRequest类与HttpRequest类的区别
HttpRequest类的对象用于服务器端,获取客户端传来的请求的信息,包括HTTP报文传送过来的所有信息.而HttpWebRequest用于客户端,拼接请求的HTTP报文并发送等. HttpWebR ...
- JAVA经典算法40题面向过程
JAVA经典算法40题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分 ...
- 基于jQuery左右滑动切换图片代码
分享一款基于jQuery左右滑动切换图片代码.这是一款基于jQuery实现的左右滑动切换焦点图代码.效果图如下: 在线预览 源码下载 实现的代码: <div class="v_ou ...
- 一款基于jquery的侧边栏导航
之前为大家介绍了好多导航菜单,今天给大家分享一款基于jquery的侧边栏导航.这款导航侧边滑出,适合放在手机网页或webapp.一看下实现的效果图: 在线预览 源码下载 实现的代码. html代码 ...
- ASPxGridView常用总结
目录:一.客户端常用1.常用API2.聚焦行变更事件3.客户端选择多行4.客户端选择行5. 获取选择的行数目6.单击行时,选中行7.通过checkbox 选择行8.选择所有行9.启动编辑框,Conta ...
- linux实现防止恶意扫描 PortSentry
linux实现防止恶意扫描 PortSentry 脚本 open 摘要: 端口做为服务器的大门安全很重要,当服务器运行很多服务时并向外提供服务,为防止有人恶意侦测服务器用途,可使用portsent ...
- Quill + Framework 7 移动端无法获取焦点
Quill 是一个轻量级的富文本编辑器.最近公司项目中需要用到这个东东.使用方法可以直接查看它的官网地址或者Github地址: Github地址:quilljs 官网地址:quill官网 主要说一下用 ...
- 获取页面中更新删除传过来的id
利用uri辅助函数 $id=$this->uri->segment(4); 其中segment(参数) 是表示你要截取获得第几个数据.