Cocos2d-x中触摸事件
2016-01-18 11:19
288 查看
理解一个触摸事件能够从时间和空间双方面考虑。
1、触摸事件的时间方面触摸事件的在时间方面,例如以下图所看到的。能够有不同的“按下”、“移动”和“抬起”等阶段,表示触摸是否刚刚開始、是否正在移动或处于精巧状态,以及何时结束,也就是手指何时从屏幕抬起。此外。触摸事件的不同阶段都能够有单点触摸或多点触摸,是否支持多点触摸还要看设备和平台。
触摸事件有两个事件监听器:EventListenerTouchOneByOne和EventListenerTouchAllAtOnce 。分别相应单点触摸和多点触摸。
这些监听器有一些触摸事件响应属性。这些属性相应着触摸事件不同阶段。通过设置这些属性能够实现事件与事件处理者函数的关联。
EventListenerTouchOneByOne中触摸事件响应属性:
std::function<bool(Touch*,Event*)> onTouchBegan。
当一个手指触碰屏幕时回调该属性所指定函数。
假设函数返回值为true。则能够回调后面的两个属性(onTouchMoved和onTouchEnded)所指定的函数,否则不回调。
std::function<void(Touch*,Event*)> onTouchMoved。当一个手指在屏幕移动时回调该属性所的指定函数。
std::function<void(Touch*,Event*)> onTouchEnded。当一个手指离开屏幕时回调该属性所的指定函数。
std::function<void(Touch*,Event*)> onTouchCancelled。
当单点触摸事件被取消时候回调该属性所的指定函数。
说明 std::function是一种通用的函数封装。std::function的实例能够是不论什么能够调用的目标,这些目标包含:函数、Lambda表达式、绑定表达式以及其他函数对象等。
EventListenerTouchAllAtOnce 中触摸事件响应属性:
std::function<void(conststd::vector<Touch*>&, Event*)> onTouchesBegan。
当多个手指触碰屏幕时回调该属性所指定的函数。
std::function<void(conststd::vector<Touch*>&, Event*)> onTouchesEnded。当多个手指在屏幕上移动时回调该属性所指定的函数。
std::function<void(conststd::vector<Touch*>&, Event*)> onTouchesMoved。当多个手指离开屏幕时回调该属性所指定的函数。
std::function<void(conststd::vector<Touch*>&, Event*)> onTouchesCancelled。当多点触摸事件被取消时回调该属性所指定的函数。
使用这些属性的代码片段演示了它们的使用:
auto listener =EventListenerTouchOneByOne::create(); listener->onTouchBegan =CC_CALLBACK_2(HelloWorld::touchBegan, this); ... ... bool HelloWorld::touchBegan(Touch*touch, Event* event) { ...... returnfalse; }
首先我们须要使用EventListenerTouchOneByOne::create()创建单独触摸事件监听器对象。然后设置它的listener->onTouchBegan属性,当中CC_CALLBACK_2(HelloWorld::touchBegan, this)是使用CC_CALLBACK_2宏绑定回调函数,该函数是以下定义的bool HelloWorld::touchBegan(Touch*touch, Event* event)函数。
其他触摸事件的阶段也须要採用相似的代码。这里不再赘述。
2、触摸事件的空间方面
空间方面就是每一个触摸点(Touch)对象包括了当前位置信息,以及之前的位置信息(假设有的话),以下的函数是能够获得触摸点之前的位置信息:
Point getPreviousLocationInView() //UI坐标
Point getPreviousLocation() //OpenGL坐标
以下的函数是能够获得触摸点当前的位置信息。
Point getLocationInView() //UI坐标
Point getLocation() //OpenGL坐标
《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:京东:http://item.jd.com/11584534.html
亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU
当当:http://product.dangdang.com/23606265.html
互动出版网:http://product.china-pub.com/3770734
《Cocos2d-x实战 C++卷》源代码及样章下载地址:
源代码下载地址:mod=viewthread&tid=1155&extra=page%3D1%20">http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1
样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1
欢迎关注智捷iOS课堂微信公共平台
相关文章推荐
- cocos2d
- cocos2d-x 3.x 弧度转角度(学习笔记)
- cocos2dx 常见的49中动作详解
- 详解cocos2d帧率FPS
- cocos studio 2.3支持骨骼动画编辑
- 01、cocos2d简介
- (cocos2d-js游戏)測试你的反应速度----------基本逻辑(上)
- cocos进入后台
- Cocos2d-iPhone V3 (2) 场景转换
- cocos2d-x3.2类FileUtils--实现把资源放在Resources文件目录下达到多平台的引用
- cocos2d-x 3.x游戏开发学习笔记(1)--mac下配置cocos2d-x 3.x开发环境
- Cocos2d-x学习笔记(一)HelloWorld
- COCOS学习笔记--单点触控
- Cocos2d 游戏状态机
- cocostudio内存释放
- convertToNodeSpace等Cocos2dx中坐标系转换解析
- cocos2d场景切换函数锦集
- Cocos2dx个人笔记之坐标系
- cocos2d-x学习过程中的疑问
- cocos2dx-flappy bird