Cocos2D-X学习12:交互功能——多点触控的实现
2016-11-29 22:16
218 查看
上一节对单点触控进行是学习,而在实际使用中,还经常用到多点触控,下面来学习多点触控。
在单点触控的基础上,学习多点触控还是比较简单的,在实际使用中一般已两点触控居多,其最常见的功能是放大、缩小等。
下面为一个多点触控的示例:
可以看到多点触控实际就是使用了另一个触摸监听器EventListenerTouchAllAtOnce,使用方法和单点触摸监听器 EventListenerTouchOneByOne相似,需要对其响应类型进行定义:
onTouchesBegan对用户的触摸到屏幕的操作进行处理, 这里的处理是生成精灵(羊驼图像),然后加入到场景中。
onTouchesMoved对用户在操作对象上的拖动操作进行处理,通过getID获取相应的编号,来确定所使用的是那一次触摸(判断多点触摸中的单个触摸),然后根据这个编码获得当前场景的子节点,从而得到对应的羊驼图像进行位置的变换。
onTouchesEnded对用户触摸结束时进行处理,同上,获得触摸的ID后,找到对应的羊驼图像,将其透明度恢复为完全不透明。
其中的for循环使用了C++11的新特性,其功能是对其判断条件中的数组进行遍历。
这里电脑无法实现多点触控,因此需要在手机上使用,效果图如下:
三个手指同时触摸产生了三只羊驼,并可以改变其位置。
在单点触控的基础上,学习多点触控还是比较简单的,在实际使用中一般已两点触控居多,其最常见的功能是放大、缩小等。
下面为一个多点触控的示例:
auto myListener = EventListenerTouchAllAtOnce::create(); myListener->onTouchesBegan = [=](const std::vector<Touch*>& touches, Event *unused_event) { for (auto &item : touches) { auto* sprite = Sprite::create("sprite.png"); sprite->setPosition(item->getLocation()); sprite->setOpacity(120); sprite->setScale(0.2f); this->addChild(sprite); } }; myListener->onTouchesMoved = [=](const std::vector<Touch*>& touches, Event *unused_event) { for (auto &item : touches) { int id = item->getID(); auto array = this->getChildren(); auto sprite = array.at(id); auto point = item->getLocation(); sprite->setPosition(point); CCLOG("id=%d\tx=%f\ty=%f", id, point.x, point.y); } }; myListener->onTouchesEnded = [=](const std::vector<Touch*>& touches, Event *unused_event) { for (auto &item : touches) { int id = item->getID(); auto array = this->getChildren(); auto sprite = array.at(id); sprite->setOpacity(255); auto point = item->getLocation(); sprite->setPosition(point); CCLOG("id=%d\tx=%f\ty=%f", id, point.x, point.y); } }; _eventDispatcher->addEventListenerWithSceneGraphPriority(myListener, this);
可以看到多点触控实际就是使用了另一个触摸监听器EventListenerTouchAllAtOnce,使用方法和单点触摸监听器 EventListenerTouchOneByOne相似,需要对其响应类型进行定义:
onTouchesBegan对用户的触摸到屏幕的操作进行处理, 这里的处理是生成精灵(羊驼图像),然后加入到场景中。
onTouchesMoved对用户在操作对象上的拖动操作进行处理,通过getID获取相应的编号,来确定所使用的是那一次触摸(判断多点触摸中的单个触摸),然后根据这个编码获得当前场景的子节点,从而得到对应的羊驼图像进行位置的变换。
onTouchesEnded对用户触摸结束时进行处理,同上,获得触摸的ID后,找到对应的羊驼图像,将其透明度恢复为完全不透明。
其中的for循环使用了C++11的新特性,其功能是对其判断条件中的数组进行遍历。
这里电脑无法实现多点触控,因此需要在手机上使用,效果图如下:
三个手指同时触摸产生了三只羊驼,并可以改变其位置。
相关文章推荐
- Cocos2D-X学习11:交互功能——单点触控的实现
- Cocos2D-X学习13:交互功能——鼠标和键盘
- 【Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 【Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效
- cocos2d-x学习日志(12) --弹出对话框的设计与实现
- cocos2d-x学习日志(12) --弹出对话框的设计与实现
- Cocos2d-x游戏引擎开发笔记(12)】粒子系统实现与用户交互的特效
- 学习tomcat源码(2) 实现servlet容器功能
- 学习COCOS2D-x 精灵动画 实现一个《热血传奇》开门效果
- Prolog学习:基本概念 and Asp.net与Dojo交互:仪器仪表实现
- Cocos2d-x学习之实现类似android的菜单栏tabbar效果
- ExtJs学习篇---OA系统登录界面设计之登录功能实现
- 学习笔记二:checkbox实现全选功能
- 【Rails学习笔记】登录和退出功能实现
- 【Cocos2d-x for WP8 学习整理】(3)CCScrollView 实现捕鱼达人一样的场景选择界面
- cocos2d中如何使用图片纹理图集的加载来实现一个动画的功能
- 【Cocos2d-x for WP8 学习整理】(4)CCTableView 实现《天天爱消除》中的得分榜
- 研读asp.net排课功能实现学习笔记
- 在cocos2d-x下实现查询软件功能