1
触摸

Coco2dx默认仅仅有CCLayer及其派生类才有触摸的功能。

2
单点触摸

打开触摸开关和触摸方式

setTouchEnabled(true);

setTouchMode(kCCTouchesOneByOne);

Cocos2dx
对触摸分三布来处理。分是是点触。移动。离开。

或是中间被打断。

其功能皆有对应的virtual
函数进行override
的。

virtual bool ccTouchBegan(CCTouch *pTouch,CCEvent *pEvent);

virtual void ccTouchMoved(CCTouch *pTouch,CCEvent *pEvent);

virtual void ccTouchEnded(CCTouch *pTouch,CCEVENT *pEvent);

virtual void ccTouchCancelled(CCTouch *pTouch,CCEvent *pEvent);

获取点击的坐标点

CCPoint pt = pTouch->getLocation();

CCLog(“x=%f y=%f”,pt.x,pt.y);

理解getDelta();

ccTouchBegan

start x = 67.309761 y = 180.989975

ccTouchMoved

delta x = 1.013191, y = 0.000000

ccTouchMoved

delta x = 5.977837, y = 0.000000

ccTouchMoved

delta x = 3.985229, y = 0.000000

ccTouchMoved

delta x = 1.013184, y = 0.000000

ccTouchMoved

delta x = 1.992615, y = 0.000000

ccTouchMoved

...................................

...................................

delta x = 1.013184, y = 0.000000

ccTouchMoved

delta x = 0.979431, y = 0.000000

ccTouchMoved

delta x = 1.992615, y = 0.000000

ccTouchMoved

delta x = 3.005798, y = 0.000000

ccTouchMoved

delta x = 3.005798, y = 0.000000

ccTouchMoved

delta x = 2.972015, y = 0.000000

ccTouchMoved

delta x = 1.013214, y = 0.000000

ccTouchMoved

delta x = 3.005798, y = 0.000000

ccTouchMoved

delta x = 0.979431, y = 0.000000

ccTouchEnded

3
多点触摸

打开触摸开关,系统默觉得单点触摸。

setTouchEnabled(true);

cocos2dx对触摸分三部来处理。各自是点触,移动。离开。或是中间被打断。

其功能皆有对应的virtual函数进行override的。

virtual bool ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);

virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent);

获取点击的坐标点。

4
案例(打飞机)

Touch.h

#ifndef
__TOUCH_H__

#define
__TOUCH_H__

#include
"cocos2d.h"

USING_NS_CC;

class
Touch :public
CCLayerColor

{

public:

static
CCScene *
scene();

CREATE_FUNC(Touch);

bool
init();

enum
MyEnum

{

BN747

};

bool
ccTouchBegan(CCTouch
*pTouch,
CCEvent *pEvent);

void
ccTouchMoved(CCTouch
*pTouch,
CCEvent *pEvent);

void
ccTouchEnded(CCTouch
*pTouch,
CCEvent *pEvent);

void
ccTouchCancelled(CCTouch
*pTouch,
CCEvent *pEvent);

};

#endif

Touch.cpp

#include
"Touch.h"

#include
"AppMacros.h"

CCScene *Touch::scene()

{

CCScene *
scene =
CCScene::create();

Touch *
layer =
Touch::create();

scene->addChild(layer);

return
scene;

}

bool
Touch::init()

{

CCLayerColor::initWithColor(ccc4(255,
255, 255, 255));

setTouchEnabled(true);

setTouchMode(kCCTouchesOneByOne);

CCSprite *
plane =
CCSprite::create("hero1.png");

plane->setPosition(ccp(100,
100));

addChild(plane);

plane->setTag(BN747);

return
true;

}

bool
Touch::ccTouchBegan(CCTouch
*pTouch,
CCEvent *pEvent)

{

CCSprite *
plane = (CCSprite
*)getChildByTag(BN747);

CCPoint
pt =
pTouch->getLocation();

if (plane->boundingBox().containsPoint(pt))

{

CCLOG("touched");

return
true;

}

//决定消息是否往下传递

return
false;

}

void
Touch::ccTouchMoved(CCTouch
*pTouch,
CCEvent *pEvent)

{

CCSprite *
plane = (CCSprite
*)getChildByTag(BN747);

CCPoint
pt =
plane->getPosition()
+ pTouch->getDelta();

if (pt.x
> plane->getContentSize().width
/ 2

&& pt.x
< winSize.width
- plane->getContentSize().width
/ 2

&& pt.y
> plane->getContentSize().height
/ 2

&& pt.y
< winSize.height
- plane->getContentSize().height
/ 2)

{

plane->setPosition(pt);

}

CCLog("ccTouchMoved
x = %g y = %g",
pt.x,
pt.y);

}

void
Touch::ccTouchEnded(CCTouch
*pTouch,
CCEvent *pEvent)

{

CCLog("ccTouchEnded");

}

void
Touch::ccTouchCancelled(CCTouch
*pTouch,
CCEvent *pEvent)

{

CCLog("ccTouchCancelled");

}

执行结果:

5.触摸touch,单点触摸,多点触摸,触摸优先和触摸事件的吞噬的更多相关文章

  1. 移动端js触摸touch详解(附带案例源码)

    移动端触摸滑动原理详解案例,实现过程通过添加DOM标签的触摸事件监听,并计算触摸距离,通过距离坐标计算触摸角度,最后通过触摸角度去判断往哪个方向触摸的. 触摸的事件列表 触摸的4个事件: touchs ...

  2. 通过解读 WPF 触摸源码,分析 WPF 插拔设备触摸失效的问题(问题篇)

    在 .NET Framework 4.7 以前,WPF 程序的触摸处理是基于操作系统组件但又自成一套的,这其实也为其各种各样的触摸失效问题埋下了伏笔.再加上它出现得比较早,触摸失效问题也变得更加难以解 ...

  3. 《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件

    原创文章,欢迎转载.转载请注明:关东升的博客 应用与用户进行交互,依赖于各种各样的事件.事件响应者对象是可以响应事件并对其进行处理的对象,响应者链是由一系列链接在一起的响应者组成的.响应者链在事件处理 ...

  4. 手机触摸touch事件

    1.Touch事件简介 pc上的web页面鼠 标会产生onmousedown.onmouseup.onmouseout.onmouseover.onmousemove的事件,但是在移动终端如 ipho ...

  5. 基于appium的模拟单点或多点触屏操作

    一.单点触控 TouchAction类:将一系列的动作放在一个链条中,然后将该链条传递给服务器,服务器接受该链条后,解析各个动作,逐个执行,TouchAction类提供了以下几种方法: 短按:pres ...

  6. cocos学习

    第一章 JavaScript 快速入门 1.1 变量 在 JavaScript 中,我们像这样声明一个变量: var a; 保留字 var 之后紧跟着的,就是一个变量名,接下来我们可以为变量赋值: v ...

  7. ‎Cocos2d-x 学习笔记(3.3) Layer

    1.简介 Layer直接继承了Node.Layer类似Ps里图层的概念,也可以理解成一块透明玻璃.Scene类似Ps里的一张图像,也可以理解成堆放玻璃的箱子. Layer能接收触摸事件.键盘事件.加速 ...

  8. Android 提供的一系列辅助系统开发工具

    除了软件本身的代码之外,Android 还提供了一系列工具来辅助系统开发,这些主要的工具包括: aapt(AndroidAssetPackagingTool):用于建立zip兼容的包(zip.jar. ...

  9. Cocos2d-x实例:单点触摸事件

    addChild(boxC,30, kBoxC_Tag);                                                                        ...

随机推荐

  1. 记录一次WebService使用的经历

    于业务需要,需要和第三方对接一些接口,但是问题是,他们的接口提供是webservice的,本人只精通restful接口(也就是说我比较年轻^-^).好在对面人特别奈斯,一顿指导我,感谢. 废话不多说了 ...

  2. [libgdx游戏开发教程]使用Libgdx进行游戏开发(3)-给游戏添加一些控制功能

    每个游戏中都有一些只有程序员自己才知道的控制功能,比如增加金钱,满血复活,无视防御,不死等等. 都是为了方便自己调试而在测试阶段使用的功能. 正如上一章提到的:我们也需要加些只有程序员才知道的控制功能 ...

  3. (十六)MySQL集群galera实现

    (1)环境介绍 galera官网:http://galeracluster.com/downloads/ # cat /etc/redhat-release CentOS Linux release ...

  4. UVALive - 3211 (2-SAT + 二分)

    layout: post title: 训练指南 UVALive - 3211 (2-SAT + 二分) author: "luowentaoaa" catalog: true m ...

  5. Codeforces Round #406 (Div. 2) D. Legacy (线段树建图dij)

    D. Legacy time limit per test 2 seconds memory limit per test 256 megabytes input standard input out ...

  6. NSNotificationCenter监听TextField文字变化

    注册 1: NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidChange", na ...

  7. UTF8、UTF16、UTF16-LE、UTF16-BE、UTF32都是些什么?

    下述内容大部分引用自CSDN: Unicode 是 unicode.org 制定的编码标准,目前得到了绝大部分操作系统和编程语言的支持.unicode.org 官方对 Unicode 的定义是:Uni ...

  8. 如何让Ubuntu 14重启后,保存屏幕亮度的设置

    每次重新启动后,系统的屏幕亮度都会被调节到最大值,挺烦人的!如何让它保存设置值呢? 首先,我们必须知道自己系统的屏幕亮度取值范围,打开终端,按照下面的步骤进行: 进入backlight这个目录 cd ...

  9. Mac的SourceTree安装时如何注册?

    目前安装SourceTree的过程中是必须注册的,但是注册又是国外的,因此需要FQ.但是未注册成功,是没有办法设置SourceTree的代理的,虽然不知道SourceTree有没有设置代理的功能,解决 ...

  10. 利用Teensy进行EM410x卡模拟以及暴力破解EM410X类门禁系统可行性猜想

    前些天Open入手了Teensy++2.0模拟EM410X,并且针对EM410X的门禁进行了一次暴力破解测试,以下就是相关代码以及内容. 什么是低频?什么是EM410x? 首先,我不得不再次提一下那些 ...