理解一个触摸事件可以从
时间和
空间两方面考虑。
1、触摸事件的时间方面
触摸事件的在时间方面,如下图所示,可以有不同的“按下”、“移动”和“抬起”等阶段,表示触摸是否刚刚开始、是否正在移动或处于静止状态,以及何时结束,也就是手指何时从屏幕抬起。此外,触摸事件的不同阶段都可以有单点触摸或多点触摸,是否支持多点触摸还要看设备和平台。
触摸事件有两个事件监听器:
EventListenerTouchOneByOne和
EventListenerTouchAllAtOnce ,分别对应单点触摸和多点触摸。这些监听器有一些触摸事件响应属性,这些属性对应着触摸事件不同阶段。通过设置这些属性能够实现事件与事件处理者函数的关联。
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表达式、绑定表达式以及其它函数对象等。
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
//当多点触摸事件被取消时回调该属性所指定的函数。
使用这些属性的代码片段演示了它们的使用:
首先我们需要使用
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坐标
- 大小: 23.9 KB
分享到:
相关推荐
Title: Learning Cocos2d-JS Game Development Author: Emanuele Feronato Length: 188 pages Edition: 1 Language: English Publisher: Packt Publishing Publication Date: 2015-01-12 ISBN-10: 1784390070 ISBN-...
cocos2d是一款开源的2D游戏开发框架,特别针对iOS设备(如iPhone、iPad和iPod touch)进行了优化。它提供了一系列强大的工具和API,使得游戏开发变得更为直观和高效。无论是专业游戏开发者还是编程新手,都能从中...
#### 一、Cocos2d for iOS 概述 - **Cocos2d**:是一款开源的2D游戏框架,适用于iOS和OS X平台。它为开发者提供了一系列工具和API,使得游戏开发过程变得更加简单高效。 - **iOS 5**:本书发布时(2012年9月)最新...
在Cocos2d-x游戏开发框架中,触摸事件(Touch Events)是用户与屏幕交互的主要方式,对于构建具有互动性的2D游戏至关重要。Cocos2d-x提供了丰富的API来处理这些事件,使得开发者能够轻松地响应用户的点击、滑动等...
在iOS游戏开发中,Cocos2D和Box2D是两个非常重要的库,它们分别用于2D图形渲染和物理模拟。本示例项目"xtzf2"是一个利用这两个库创建的简单游戏,其中包含了触摸控制和粒子效果的火球元素。下面我们将详细探讨这些...
【cocos2d-x TouchDemo】是一个基于cocos2d-x框架的示例项目,它主要展示了如何在游戏或应用中处理触摸事件。cocos2d-x是一个流行的开源跨平台2D游戏开发框架,广泛应用于iOS、Android以及Windows等多平台的开发。在...
void MyLayer::onTouchesMoved(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event* event) { // 获取两个触点的位置 cocos2d::Vec2 touch1Pos = touches[0]->getLocation(); cocos2d::Vec2 touch2Pos...
根据提供的信息,“cocos2d-x权威指南”这一标题与描述明确指出了本文将围绕cocos2d-x这一游戏开发框架展开深入探讨。cocos2d-x是一款非常流行的跨平台游戏开发引擎,支持多种编程语言如C++、JavaScript等,并且能够...
10. **Touch事件处理**:Cocos2D支持触摸事件,允许开发者根据用户的触摸输入来控制游戏逻辑。 学习【知易cocos2D源代码】,初学者将接触到以下关键知识点: 1. **Objective-C编程语言**:Cocos2D基于Objective-C...
Cocos2d是一个开源的游戏开发框架,主要用于创建2D游戏、演示和其他图形交互应用。它在iOS和Android等平台上广泛使用。本篇文章将带你入门cocos2d,讲解环境搭建、基本概念以及如何进行触控输入和适配Retina显示。 ...
Cocos2d-x提供了`EventDispatcher`来注册和处理事件,开发者可以监听`Touch`事件,根据玩家的滑动或点击来控制角色的移动。 6. **资源管理**:游戏中的音频、图像等资源需要有效管理。Cocos2d-x有内置的`...
在Xcode中集成Cocos2d,通常通过创建一个新的Cocoa Touch静态库项目或Cocoa Touch Framework项目来实现。这样可以将Cocos2d的源代码或库文件引入到项目中。此外,还可以使用CocoaPods或Carthage等依赖管理工具,...
cocos2d for iPhone是一款专为苹果设备设计的游戏开发框架,适用于iPhone、iPod Touch以及iPad平台。它采用Objective-C语言编写,这使得开发者能够充分利用苹果的官方文档和SDK,实现更深层次的集成与优化。cocos2d...
virtual bool onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event) override { cocos2d::Vec2 touchLocation = touch->getLocation(); // 处理触摸开始的逻辑 return true; // 返回true表示继续监听...
virtual bool touchBegan(cocos2d:: CCTouch* touch, cocos2d::CCEvent* event); virtual void touchMoved(cocos2d::CCTouch* touch, cocos2d::CCEvent* event); virtual void touchEnded(cocos2d::CCTouch* ...
cocos2d for iPhone API,用于快速开发iPhone 2D程序。 该文档根据下列内容编译 cocos2d for iPhone API reference ver.0.7.1 URL: http://www.sapusmedia.com/cocos2d-iphone-api-doc/ cocos2d程序效果图: ...
virtual bool onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event); virtual void onTouchMoved(cocos2d::Touch *touch, cocos2d::Event *event); virtual void onTouchEnded(cocos2d::Touch *touch, ...
根据给定的文件信息,我们可以总结出一系列与Cocos2d相关的IT知识要点,这些要点主要围绕游戏开发、iOS编程以及使用Cocos2d引擎进行游戏制作的关键概念和技术。 ### Cocos2d游戏开发入门 #### 引言:游戏开发的新...