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. java android面试题分析总结

    本文参考多处,一并感谢! http://www.blogjava.net/fanyingjie/archive/2007/06/27/126467.aspx http://baike.baidu.co ...

  2. js基础语法(一)

    学习网站参考:http://www.w3school.com.cn/ 写入html输出: document.write('test out put'); 例子: http://www.w3school ...

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

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

  4. JavaFX2: 鼠标拖动选择和Ctrl+Shift连续区间选择的ListView

    JavaFX2的ListView中的多选没有提供鼠标拖动选择的功能,同时按下Ctrl和Shift后连续的区间选中也不支持,以下代码用于处理这两个问题,细节见代码注释: import com.sun.j ...

  5. 字符串string和内存流MemoryStream及比特数组byte[]互转

    原文:字符串string和内存流MemoryStream及比特数组byte[]互转   字符串string和内存流MemoryStream及比特数组byte[]互转比较 定义string变量为str, ...

  6. 在qt中用tcp传输xml消息

    在qt中用tcp传输xml消息 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:Qt5 3.1.2 说明: 在tcp上 ...

  7. CF 518D(概率dp)

    传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数 ...

  8. android之listView定位到指定行同一时候隐藏输入键盘

    帮别人该bug遇到的一个问题,记录下来. listView.setSelection(a); 这种方法能够让让你的listview定位到指定行 可是假设紧接着运行隐藏输入键盘的代码.则会有bug.这个 ...

  9. 使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一)——初识WiX

    原文:使用WiX Toolset创建.NET程序发布Bootstrapper(安装策略管理)(一)--初识WiX Visual Studio 打包安装七宗罪 开发.NET的人,肯定会使用Visual ...

  10. Volley该框架使用了大量的请求图片

    尊重原创 http://write.blog.csdn.net/postedit/26142025 代码下载:http://download.csdn.net/detail/yuanzeyao2008 ...