registerWithTouchDispatcher 注册单点触摸事件

Doc:

If isTouchEnabled, this method is called onEnter.

Override it to change the way CCLayer receives touch events.

Default: CCTouchDispatcher::sharedDispatcher()->addStandardDelegate(this,0);

Example: void CCLayer::registerWithTouchDispatcher()

{

CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this,INT_MIN+1,true);

}

当我们使用this->setTouchEnabled(true);方法开启触摸事件时,默认开启的是多点触摸,而我们有时只需要单点触摸就够了。实现方法如下:

代码例子:

void HelloWorld::registerWithTouchDispatcher()
{
    CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
}

在registerWithTouchDispatcher()函数中注册的好处是:当CCLayer或CCLayer的派生类加载时就会调用registerWithTouchDispatcher()函数 而当前CCLayer被移除时也会对注册的touch事件进行注销。

TargetedTouchDelegate.

使用这种类型的delegate的好处:

1.你不需要再处理NSSets了,CCTouchDispatcher 为了做了分离工作。每次调用的时候,你都会得到一个唯一的UITouch。 这里我们将要覆盖 “ccTouchBegan” 和“ccTouchEnded” --第一个方法当第一个touch事件开始的时候被调用,另外一个是touch结束的时候被调用。

值得注意的是,一定要重写ccTouchBegan函数让其返回true。不然就会出错,因

为系统不会给你默认返回真。

bool HelloWorld::ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
{
    return true;
}

ccTouchEnded函数:

void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
{

}

registerWithTouchDispatcher 注册单点触摸事件,布布扣,bubuko.com

时间: 2024-10-11 21:59:28

registerWithTouchDispatcher 注册单点触摸事件的相关文章

Cocos2d-x实例:单点触摸事件

addChild(boxC,30, kBoxC_Tag);                                                                                         ⑥ returntrue; } 我们在HelloWorld::init()函数中初始化了场景中的背景和三个方块精灵.代码第①~④行是创建并添加背景,图8-3所示的背景是由一个128x128纹理图片(BackgroundTile.png)反复贴图上,这样可以减少内存

Quick cocos2dx-Lua(V3.3R1)学习笔记(九) ---- 事件篇之单点触摸事件,让我们用精灵模仿一个按钮吧

本篇就开始讲单点触摸事件,我们在前面用UIPushButton做菜单那篇,就用了触摸事件,只不过我们感觉不出来,我们基本不需要分析触摸消息.这篇我们用一个精灵模仿出按钮效果,加强理解 至于原理,廖大在文档中讲的很清楚,就不赘叙了. Quick的触摸机制(点我点我(*^__^*)) 一般,我们按按钮的时候,总会发现,按钮按下去,按钮会缩小,松开,按钮会恢复原来的大小. function MyScene:ctor() local sprite = display.newSprite("Hello.p

Cocos2d-x开发实例:单点触摸事件

下面我们通过一个实例详细了解一下,层中单点触摸事件的实现过程.感受一下它的缺点和优点.该实例场景如下图所示,场景中有两个方块精灵,我们可以点击和移动它们. 下面我们看看HelloWorldScene.cpp具体的实现代码如下: [html] view plaincopy bool HelloWorld::init() { if( !Layer::init() ) { returnfalse; } ...... setTouchEnabled(true); //设置为单点触摸 setTouchMo

cocos2dX 事件之触摸事件和触摸事件集合

今天, 我们来学习cocos2dX里面的触摸事件与触摸事件合集, 现在的手机游戏交互基本上都是通过触摸交互的, 所以大家明白这节的重要性了吧, 本节篇幅比较大, 所以我就不扯闲话了 先来看看常用函数: 触摸事件: addTargeteDelegate( 谁使用, 优先级, 是否拦截触摸消息); //注册单点触摸 virtual bool ccTouchBegan(CCTouch * touch,CCEvent * event); //触摸开始 virtual void ccTouchMoved(

QUICK 中的触摸事件

本文转载于:http://www.cocos2d-x.org/docs/manual/framework/quick/V3/touch-events/zh Cocos2d-x 原本的触摸机制存在一些限制,在使用中需要开发者做不少额外的处理.所以 Quick-Cocos2d-x 提出了自己的一套触摸机制.本文详细介绍了这套新机制的用法. 显示层级 在 Cocos2d-x 里,整个游戏的画面是由一系列的 Scene, Node, Sprite, Layer 等对象构成的.而所有这些对象都是从 Nod

cocos2d-x 事件分发机制 ——触摸事件监听

cocos2d-x 3.0 出来已经好久了,也已经用3.0写了几个小游戏,感觉3.0的事件触发机制太赞了,随这里总结一下,也算是对知识的一种回忆和加深理解. 3.0的事件分发机制中,需要也仅仅需要通过创建一个事件监听器来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher,所有的事件监听器由这个分发器统一管理,即可完成事件响应. 事件监听器有以下几种: 1.EventListenerTouch(触摸事件) 2.EventListenerKeyboard(键盘响应事件) 3.

【转载】Quick 中的触摸事件

原文地址 http://cn.cocos2d-x.org/article/index?type=quick_doc&url=/doc/cocos-docs-master/manual/framework/quick/V3/touch-events/zh.md Quick 中的触摸事件 Cocos2d-x 原本的触摸机制存在一些限制,在使用中需要开发者做不少额外的处理.所以 Quick-Cocos2d-x 提出了自己的一套触摸机制.本文详细介绍了这套新机制的用法. 显示层级 在 Cocos2d-x

Cocos2d-x中触摸事件

理解一个触摸事件可以从时间和空间两方面考虑. 1.触摸事件的时间方面 触摸事件的在时间方面,如下图所示,可以有不同的"按下"."移动"和"抬起"等阶段,表示触摸是否刚刚开始.是否正在移动或处于静止状态,以及何时结束,也就是手指何时从屏幕抬起.此外,触摸事件的不同阶段都可以有单点触摸或多点触摸,是否支持多点触摸还要看设备和平台. 触摸事件有两个事件监听器:EventListenerTouchOneByOne和EventListenerTouchAl

多点触摸与单点触摸接口主要区别【转】

转自:http://blog.csdn.net/eleven_yy/article/details/7723079 上发单点触摸事件 input_report_key(input,ABS_MT_TRACKING_ID,0); input_report_key(input, BTN_TOUCH, 1); input_report_abs(input, ABS_MT_POSITION_X, ts->tc.x1); input_report_abs(input, ABS_MT_POSITION_Y,