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. windows上的命令telnet

    telnet可以测试端口号是否可用,比如: telnet ip:port 或者 telnet www.baidu.com PS:win7环境下,默认没有安装telnet客户端,你可以去“控制面板”-- ...

  2. java.io.WriteAbortedException异常

    java.io.WriteAbortedException异常 未实现 public interface Serializable 接口的类将无法使其任何状态序列化或反序列化. 可序列化类的所有子类型 ...

  3. Maven学习笔记3

    好了,按照笔记2的方法我们创建好一个web项目(使用maven:java项目还是java项目,web项目还是web项目,唯一的变化既是我们在pom.xml中配置了我们本应该先下载然后导入的jar包,这 ...

  4. 后门工具dbd

    后门工具dbd   dbd功能类似于Netcat,但提供强大的加密功能,支持AES-CBC-128和HMAC-SHA1加密.该工具可以运行在类Unix和Windows系统中.渗透测试人员首先使用该工具 ...

  5. [CF911C]Three Garlands

    题目大意: 给你三个灯,分别以k1秒一次,k2秒一次和k3秒一次的频率闪烁着. 你可以自定义三个灯开启的时间,问是否有一种方案,使得max(k1,k2,k3)秒之后,每秒钟都至少有一盏灯闪烁. 思路: ...

  6. Spring Boot中使用MyBatis注解配置详解

    传参方式 下面通过几种不同传参方式来实现前文中实现的插入操作. 使用@Param 在之前的整合示例中我们已经使用了这种最简单的传参方式,如下: @Insert("INSERT INTO US ...

  7. 1.6(Spring MVC学习笔记)文件上传与下载

    一.文件上传 实现文件上传多数是采用表单提交数据, 但对于进行文件上传的表单需要满足一下几个条件 1.表单的method设置为post 2.表单的enctype设置为multipart/form-da ...

  8. 1.1(学习笔记)JSP(Java Server Pages)基础(脚本元素、指令元素)

    一.JSP简介 JSP全称为Java Server Pages,是一种动态网页开发技术,可以在HTML界面中嵌入java代码, 实现动态的提供数据.访问JSP时服务器会将JSP翻译成Servlet,访 ...

  9. (转)MOMO的Unity3D研究院之深入理解Unity脚本的执行顺序(六十二)

    http://www.xuanyusong.com/archives/2378 Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不 ...

  10. JavaScript的=、==和===

    (1) 百度知道上的解释: = 为对象赋值 == 表示两个对象toString值相等 === 表示两个对象类型相同且值相等 (2)  知乎上的解释: 绝大多数场合应该使用 === ,只有检测 null ...