本站文章转载务必在明显处注明:原文链接 http://blog.csdn.net/cjsen/article/details/17240319
前言
在cocos2dx 3.0 开始 Layer的点击事件以节点的添加顺序进行分配,在Layer侦听onTouchBegan等方法
Layer 添加侦听事件
在Layer初始化方法中添加以下代码
this->setSwallowsTouches(false);//是否吞食事件的传递,单点触摸模式下才起作用 setTouchEnabled(true);//开启事件侦听 this->setTouchMode(Touch::DispatchMode::ONE_BY_ONE);//单点触摸在.ccp中实现下面这些方法
virtual bool onTouchBegan(Touch* pTouch, Event* pEvent); virtual void onTouchMoved(Touch* pTouch, Event* pEvent); virtual void onTouchEnded(Touch* pTouch, Event* pEvent); virtual void onTouchCancelled(Touch* pTouch, Event* pEvent);
static Layer* m_pOldLayer = NULL; void ZY_TableChange::initTouchEvent(){ // auto m_pListener = EventListenerTouch::create(Touch::DispatchMode::ONE_BY_ONE); m_pListener->setSwallowTouches(false); m_pListener -> retain(); m_pListener->onTouchBegan = [](Touch* touch, Event* event) { m_pOldLayer->onTouchBegan(touch, event); return true; }; m_pListener->onTouchMoved = [](Touch* touch, Event* event) { m_pOldLayer->onTouchMoved(touch, event); }; m_pListener->onTouchEnded = [](Touch* touch, Event* event) { m_pOldLayer->onTouchEnded(touch, event); }; m_pListener->onTouchCancelled = [](Touch* touch, Event* event) { m_pOldLayer->onTouchCancelled(touch, event); }; EventDispatcher::getInstance()->addEventListenerWithFixedPriority(m_pListener, -100); }