cocos2d触摸事件处理机制(2.x和3.x变化)
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版本号的触屏事件
//单点触摸
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变化)的更多相关文章
- Android 触摸事件处理机制
		
Android 触摸事件的处理主要涉及到几个方法:onInterceptTouchEvent(), dipatchTouchEvent(), onTouchEvent(), onTouch(). on ...
 - iOS触摸事件处理
		
iOS触摸事件处理 主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块, (1)首先在视图的层次结构里找到能响应消息的那个视图. (2 ...
 - iOS触摸事件处理--备用
		
主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块,(1)首先在视图的层次结构里找到能响应消息的那个视图.(2)然后在找到的视图里处理消息 ...
 - Cocos2d-x Touch事件处理机制
		
在Cocos2d-x中提供两种触摸事件处理机制:CCStandardTouchDelegate和CCTargetedTouchDelegate. 一.如何使用 0.默认情况下CCLayer都是没有启动 ...
 - Cocos2d-x之事件处理机制
		
| 版权声明:本文为博主原创文章,未经博主允许不得转载. 事件处理机制分为单点触屏,多点触屏,加速度事件,键盘事件和鼠标事件.在现在的智能手机中,触屏的应用比较的广泛,尤其是多点触屏事件的技术,使 ...
 - Android的Touch事件处理机制
		
Android的Touch事件处理机制比较复杂,特别是在考虑了多点触摸以及事件拦截之后. Android的Touch事件处理分3个层面:Activity层,ViewGroup层,View层. 首先说一 ...
 - IOS事件处理机制(关于触发者和响应者的确认)
		
事件处理机制 在iOS中发生触摸后,事件会加入到UIApplication事件队列(在这个系列关于iOS开发的第一篇文章中我们分析iOS程序原理的时候就说过程序运行后UIApplication会循环监 ...
 - Android的事件处理机制详解(二)-----基于监听的事件处理机制
		
基于监听的事件处理机制 前言: 我们开发的app更多的时候是需要与用户的交互----即对用户的操作进行响应 这就涉及到了android的事件处理机制; android给我们提供了两套功能强大的处理机制 ...
 - Android的事件处理机制(一)------基于回调机制的事件处理
		
Android平台的事件处理机制有两种,一种是基于回调机制的,一种是基于监听接口的,现介绍第一种:基于回调机制的事件处理.Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通 ...
 
随机推荐
- 爬虫框架: DotnetSpider
			
[开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计 一 ,为什么要造轮子 有兴趣的同学可以去各大招聘网站看一下爬虫工程师的要求,大多是JAVA,PYTH ...
 - (一)----使用HttpClient发送HTTP请求(通过get方法获取数据)
			
(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) 一.HTTP协议初探: HTTP(Hypertext Transfer Protocol)中文 “超文本传输协议”,是 ...
 - hdu4055 Number String
			
Number String Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
 - c coding style之学习篇
			
1. 使用do-while结构去避免潜在的内存泄漏问题. do { p1 = malloc(10); if (null == p1) { break; ...
 - 8592 KMP算法
			
8592 KMP算法 时间限制:1000MS 内存限制:1000K 题型: 编程题 语言: 无限制 描写叙述 用KMP算法对主串和模式串进行模式匹配. 本题目给出部分代码.请补全内容. #inc ...
 - Swift初窥--使用Swift实现TableView
			
完毕Swift的语法关之后.来点实际的Task,第一个任务是写一个tableview,使用cocoaTouch里tableview这个经常使用的控件. 创建project.选择Swift语言 首先是用 ...
 - Spark&Spark性能调优实战
			
Spark特别适用于多次操作特定的数据,分mem-only和mem & disk.当中mem-only:效率高,但占用大量的内存,成本非常高;mem & disk:内存用完后,会自己主 ...
 - UIButton return(textField textView)
			
首先设置TextField 或 TextView的 delegate /////UITextView - (BOOL)textView:(UITextView *)textView shouldCha ...
 - python语言学习9——使用list和tuple
			
list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 位置 用索引来访问list中每一个位置的元素,记得索引是从0开始的,到 len-1结 ...
 - no copy constructor available or copy constructor is declared 'explicit'
			
今天新写了一个类.然后对这个类使用STL中的vector,碰到错误: no copy constructor available or copy constructor is declared 'ex ...