cocos2dx 3.x 触摸事件

单点触摸:

bool onTouchBegan(cocos2d::Touch *pTouch, cocos2d::Event *pEvent);
 void onTouchMoved(cocos2d::Touch *pTouch, cocos2d::Event *pEvent);
 void onTouchEnded(cocos2d::Touch *pTouch, cocos2d::Event *pEvent);

多点触摸:

void onTouchesBegan(const std::vector<cocos2d::Touch *>& touches, cocos2d::Event *unused_event);
 void onTouchesMoved(const std::vector<cocos2d::Touch *>& touches, cocos2d::Event *unused_event);
 void onTouchesEnded(const std::vector<cocos2d::Touch *>& touches, cocos2d::Event *unused_event);

触摸注册:

EventDispatcher *dispatcher = Director::getInstance()->getEventDispatcher();
 EventListenerTouchOneByOne *listener = EventListenerTouchOneByOne::create();
 listener->onTouchBegan = CC_CALLBACK_2(MyLayer::onTouchBegan,this);
 listener->onTouchMoved = CC_CALLBACK_2(MyLayer::onTouchMoved,this);
 listener->onTouchEnded = CC_CALLBACK_2(MyLayer::onTouchEnded,this);
 dispatcher->addEventListenerWithSceneGraphPriority(listener,this);

listen->setSwallowTouches(true);

setSwallowTouches用于设置是否吞没事件,也就是当某个触摸事件回调的时,截断该事件,让它不能继续传递给其他人。同时2个层,上层写了之后,下面的层获取不到点击事件.

时间: 2024-10-17 00:41:49

cocos2dx 3.x 触摸事件的相关文章

关于在Cocos2dx中注册触摸事件——Lua

关于在Cocos2dx中注册触摸事件,之前一直对此一知半解,这两天在看引擎的源码,趁此机会写下来... 以下纯属个人理解,如有不对欢迎指正... 在引擎的CCLayer类中声明了有四个方法: 1 virtual bool onTouchBegan(Touch *touch, Event *unused_event); 2 virtual void onTouchMoved(Touch *touch, Event *unused_event); 3 virtual void onTouchEnde

cocos2dx中的触摸事件及触摸优先级

1.只有CCLayer及其派生类才有触摸功能. 2.开启触摸 setTouchEnable(true); 3.设置触摸模式,单点,多点(仅IOS支持) setTouchMode(kCCTouchesOneByOne);//单点触摸 4.需要重载(override)的四个触摸事件函数 bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);//点触事件,返回false,表示触摸事件不往下传递了 void ccTouchMoved(CCTouch *p

关于Cocos2dx 3.6 触摸事件 中 setSwallowTouches 的疑惑

假设Layer1的ZOrder大于Layer2的ZOder,则 Layer1和Layer2的触摸事件回调函数调用情况如下 Layer1 setSwallow:          false     false      true     true Layer1 touchBegan ret:    false     true     false      true -------------------------------------------------------------- La

cocos2d-x 3.x 触摸事件

HelloWorldScene.h bool touchBegan(cocos2d::Touch*touch, cocos2d::Event*event);//触摸开始,返回bool类型 void touchMoved(cocos2d::Touch*touch, cocos2d::Event*event); void touchEnded(cocos2d::Touch*touch, cocos2d::Event*event); void touchCancelled(cocos2d::Touch

cocos2d-x之多点触摸事件

1 //全部所有的触摸点一起触发 2 auto listener = EventListenerTouchAllAtOnce::create(); 3 4 listener->onTouchesBegan = [](std::vector<Touch*> ts, Event *e){ 5 log("onTouchesBegan"); 6 }; 7 8 //获得触摸点的数量 9 listener->onTouchesMoved = [](std::vector&l

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

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

cocos2d-x 3.x之触摸事件

Layer类的一个重要作用就是接受输入事件,它封装了触摸输入的处理接口.一般情况下,我们可以通过setTouchEnabled方法来开启或关闭接收触摸输入.事实上并不是只有Layer才支持接收触摸事件,任何一个游戏元素都可以接收事件,只不过Layer提供了现成的支持. 我们只需通过创建一个事件监听器用来实现各种触发后的逻辑,然后添加到事件分发器_eventDispatcher中,所有事件监听器由这个分发器统一管理,即可完成事件响应. 为一个精灵添加触摸事件的四个步骤 1.创建一个精灵 2.创建一

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

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

cocos2d-x ios游戏开发初认识(八) 触摸事件与碰撞检测

玩过植物大战僵尸都知道,要在草坪里放一朵向日葵或者其它的植物只需触摸那个植物将其拖入到想要摆放的位置,这其实就是这节要写的触摸事件.还可以发现当我们的僵尸出来的时候,我们的小豌豆会发子弹攻击僵尸,当子弹与僵尸碰撞的时候子弹自动消失,这就这节要说的碰撞检测. 下面具体看代码的实现: 做ios开发有触摸事件cocos2d同样也有 一.先覆写touch事件 .h文件 using namespace cocos2d; class MainScene:public CCLayer { private: v