2.x的触摸事件的版本号

触摸事件处理有2种子。以下单点触摸的样本。(另一种多点触摸屏)。

创建cocos2d 该项目。

1. 重写下面虚函数。

  bool ccTouchBegan(cocos2d::CCTouch* touch, cocos2d::CCEvent* event);
void ccTouchMoved(cocos2d::CCTouch* touch, cocos2d::CCEvent* event);
void ccTouchEnded(cocos2d::CCTouch* touch, cocos2d::CCEvent* event);

//注意不要和ccTouchesBegan函数混淆,这是多点触屏的响应事件。顾名思义。加了es。

  void onEnter(); 

  void onExit(); //这个函数是点击关闭button运行的函数,能够在里面加入有必要的代码,再退出之前。

,这里主要是退出前进行移除触屏事件。

//假设有学过MFC的话,这个函数就是类似于OnCancel()函数。

//以下就是简单地说明步骤。

2.然后为上面的函数加入内容。

void HelloWorld::onEnter()
{
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false); //注冊事件
CCLayer::onEnter(); }
void HelloWorld::onExit()
{ CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
CCLayer::onExit();
}
bool HelloWorld::ccTouchBegan(CCTouch* touch, CCEvent* event)
{
CCLOG("ccTouchBegan"); //后台输出
return true;
}
void HelloWorld::ccTouchMoved(CCTouch* touch, CCEvent* event){
CCLOG("ccTouchMoved");
}
void HelloWorld::ccTouchEnded(CCTouch* touch, CCEvent* event)
{
CCLOG("ccTouchEnded");
}

这里笔者感概一下、

//有人说

//“正确的应该使用setTouchEnabled(true)来注冊事件,对于上面的注冊事件的代码的简化。会出现逻辑问题,并且造成控制触屏事件的操作性减低”

// 我说,不然。既然你使用了自己的方法去注冊事件,你就不是必需再次使用他们封装好的setTouchEnabled()函数。里面函数有他们的逻辑推断。(你能够

不断寻找到那个函数的内容看看的)。我们也有自己的逻辑推断。

所以不是正确与错的问题。而是你的游戏需求,需不须要。另外。我更喜欢懂其然,

知其理,还有我想说,这个cocos2d框架已经减低非常大的门槛了,把非常多底层的操作封装,所以不懂opengl和dx的人也能够上手,这里我想说。

对于不懂opengl和dx,还是有必要去加强基础。虽说。你不去学习。也没有什么大问题,可是非常多大问题通常是建立在细节上。

经过了上面2个步骤,简单实现了单点触屏事件的处理。

以下顺便也讲一下多点触屏事件的处理。

步骤差点儿相同。只是就是重写函数有点差别。

1.重写下面函数。

<pre name="code" class="cpp">virtual <span style="font-family: Arial, Helvetica, sans-serif;">void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);</span>
virtual <span style="font-family: Arial, Helvetica, sans-serif;">void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);</span>
virtual <span style="font-family: Arial, Helvetica, sans-serif;">void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);</span>

virtual void onEnter();virtual void onExit();



2.为上面的函数加入内容。

void HelloWorld::onEnter()
{ CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, kCCMenuHandlerPriority -1,true); //这里和第一个有差别
CCLayer::onEnter();
}
void HelloWorld::onExit()
{ CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
CCLayer::onExit();
}

其它的3个事件响应内容自己写。笔者不再反复上面的了。

3.x版本号的触屏事件

谈到3.x版本号的cocos,这变化不是一般的大,各种处理方式都改变了,算了,你懂得,不谈他的变化有多大。下面是3.x版本号的触屏事件处理方式。

尽管是改变比較大,但处理方式和思维给开发人员一个非常方便的处理方式。3.x的版本号我认为规范性比2.x好了好多。下面直接给代码。不进行解析
多点触摸类似
//单点触摸
virtual bool onTouchBegan(Touch *touch, Event * pEvent);
virtual void onTouchMoved(Touch *touch, Event * pEvent);
virtual void onTouchEnded(Touch *touch, Event * pEvent);
virtual void onTouchCancelled(Touch *touch, Event * pEvent); auto dispatcher = Director::getInstance()->getEventDispatcher();
auto TouchListener = EventListenerTouchOneByOne::create();
TouchListener->onTouchBegan = CC_CALLBACK_2(HelloWorld::onTouchBegan,this);
TouchListener->onTouchMoved = CC_CALLBACK_2(HelloWorld::onTouchMoved,this);
TouchListener->onTouchEnded = CC_CALLBACK_2(HelloWorld::onTouchEnded,this);
TouchListener->onTouchCancelled = CC_CALLBACK_2(HelloWorld::onTouchCancelled,this);
TouchListener->setSwallowTouches(true);
dispatcher->addEventListenerWithSceneGraphPriority(TouchListener,this); bool HelloWorld::onTouchBegan(Touch *touch, Event * pEvent)
{
CCLOG("onTouchBegan");
return 1;
}
void HelloWorld::onTouchMoved(Touch *touch, Event * pEvent)
{
CCLOG("onTouchMoved");
}
void HelloWorld::onTouchEnded(Touch *touch, Event * pEvent)
{
CCLOG("onTouchEnded");
}
void HelloWorld::onTouchCancelled(Touch *touch, Event * pEvent)
{
CCLOG("onTouchCancelled");
}


cocos2d触摸事件处理机制(2.x和3.x变化)的更多相关文章

  1. Android 触摸事件处理机制

    Android 触摸事件的处理主要涉及到几个方法:onInterceptTouchEvent(), dipatchTouchEvent(), onTouchEvent(), onTouch(). on ...

  2. iOS触摸事件处理

    iOS触摸事件处理   主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块, (1)首先在视图的层次结构里找到能响应消息的那个视图. (2 ...

  3. iOS触摸事件处理--备用

    主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块,(1)首先在视图的层次结构里找到能响应消息的那个视图.(2)然后在找到的视图里处理消息 ...

  4. Cocos2d-x Touch事件处理机制

    在Cocos2d-x中提供两种触摸事件处理机制:CCStandardTouchDelegate和CCTargetedTouchDelegate. 一.如何使用 0.默认情况下CCLayer都是没有启动 ...

  5. Cocos2d-x之事件处理机制

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 事件处理机制分为单点触屏,多点触屏,加速度事件,键盘事件和鼠标事件.在现在的智能手机中,触屏的应用比较的广泛,尤其是多点触屏事件的技术,使 ...

  6. Android的Touch事件处理机制

    Android的Touch事件处理机制比较复杂,特别是在考虑了多点触摸以及事件拦截之后. Android的Touch事件处理分3个层面:Activity层,ViewGroup层,View层. 首先说一 ...

  7. IOS事件处理机制(关于触发者和响应者的确认)

    事件处理机制 在iOS中发生触摸后,事件会加入到UIApplication事件队列(在这个系列关于iOS开发的第一篇文章中我们分析iOS程序原理的时候就说过程序运行后UIApplication会循环监 ...

  8. Android的事件处理机制详解(二)-----基于监听的事件处理机制

    基于监听的事件处理机制 前言: 我们开发的app更多的时候是需要与用户的交互----即对用户的操作进行响应 这就涉及到了android的事件处理机制; android给我们提供了两套功能强大的处理机制 ...

  9. Android的事件处理机制(一)------基于回调机制的事件处理

    Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,现介绍第一种:基于回调机制的事件处理.Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通 ...

随机推荐

  1. HTML属性

  2. [Android开发Tips]Bean的定义

    Bean: public class Data extends BaseBean { public ArrayList<DataItem> data = new ArrayList< ...

  3. Zeroonepack coming~^.^

    今天抓的四道DP做完了==三道是用背包做的,突然想起来背包知识点总结还没做~反正时间还早..把01背包和完全背包小结了吧~~福利来啦~~噶呜~ 01背包: 基本思路: 01背包问题是最广为人知的动态规 ...

  4. Android开发经验之—intent传递大数据

    在Activity或者组件之前传递信息时,一般採用intent绑定bundle的方式传值,但在使用过程中须要注意的是不要用bundle传递大容量数据: 在做项目的过程中,须要将听写界面的听写结果信息传 ...

  5. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  6. SQL SERVER CHARINDEX函数

    CHARINDEX函数经常常使用来在一段字符中搜索字符或者字符串.假设被搜索的字符中包括有要搜索的字符,那么这个函数返回一个非零的整数,这个整数是要搜索的字符在被搜索的字符中的開始位数.即CHARIN ...

  7. 【Cocos2d-X开发笔记】第一期 Cocos2d-X的环境搭建

          作者今天开始正式开始学习Cocos2d-X引擎进行游戏编程,预计两天会更新一期,最后实现ios游戏的appsore上线. (部分内容转载自:http://blog.csdn.net/yan ...

  8. python 学习笔记 10 -- 正則表達式

    零.引言 在<Dive into Python>(深入python)中,第七章介绍正則表達式,开篇非常好的引出了正則表達式,以下借用一下:我们都知道python中字符串也有比較简单的方法, ...

  9. VS2010调用VLFeat

    相比OpenCV,VLFeat的代码全是开源,并且非常重要的一点,事实上现的sift和Low的精度差点儿相同,这个团队全是码神,膜拜一下. 依照以下的网址进行安装,本人已经装上了,确实能够的. 安装參 ...

  10. 读取USB HDD(USB移动硬盘信息)序列号的代码

    读取USB HDD(USB移动硬盘)序列号的代码,型号及分位. 使用Visual Studio 2010编译成功. 代码使用了CrystalDiskInfo中的代码smartata.c中相关代码: 例 ...