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. mysql TIMESTAMPDIFF

    在MySQL应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_ ...

  2. 17、Django实战第17天:机构详情展示

    1.进入xadmin添加测试数据(教师.课程) 2.把以下4个前端页面复制到templates中 先打开这几个页面分析,它们和之前的课程机构列表页是不一样的机构,且没有共同的部分,但是这4个页面却是类 ...

  3. httpd访问网络配置httpd_can_network_connect

    检查网络访问的配置 getsebool -a | grep httpd_can_network_connect 如结果如下 httpd_can_network_connect --> off 则 ...

  4. luogu P1026 统计单词个数

    题目链接 luogu P1026 统计单词个数 题解 贪心的预处理母本串从i到j的最大单词数 然后dp[i][j] 表示从前i个切了k次最优解 转移显然 代码 #include<cstdio&g ...

  5. 【构造】Codeforces Round #397 by Kaspersky Lab and Barcelona Bootcamp (Div. 1 + Div. 2 combined) D. Artsem and Saunders

    根据那两个式子 g(h(x))=x h(g(x))=f(x) 可以推出来两个新的式子 g(f(x))=g(x) h(x)=f(h(x)) 于是,我们先找到f(x)的所有不动点,有几个不动点,m就是多少 ...

  6. 【kmp算法】模板

    void GetFail(char P[],int __next[])//__next[i]表示s[0]~s[i-1]的前缀中,最大长度相等的前后缀是多少 { __next[0]=-1; int le ...

  7. python3-开发面试题(python)6.22基础篇(1)

    1.为什么学习Python? 1.语言排行榜 2.语言本身简洁,优美,功能超级强大的 3.跨平台 4.非常火爆的社区 5.用的公司的多 2.通过什么途径学习的Python? 某宝2.8就搞定了,跟着视 ...

  8. [CF538H]Summer Dichotomy

    [CF538H]Summer Dichotomy 题目大意: ​ 将若干个学生分为两个班级\(S_1,S_2\),每个班的学生数分别为\(n_1,n_2\)(甚至可以没有学生,也可以没有老师).给出限 ...

  9. Java 输入框复用代码

    1 int messageType=JOptionPane.INFORMATION_MESSAGE; String message=mines + " minutes is approxim ...

  10. vsftpd修改被动模式数据端口

    pasv_enable=YES pasv_min_port=10000 pasv_max_port=20000 我厂只限一个端口段通讯,只能这样改下,否则永远是列出目录失败