本站文章转载务必在明显处注明:原文链接 http://blog.youkuaiyun.com/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);
在非Layer节点 中侦听事件(此方法也可用在Layer中)
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);
}
本文介绍了Cocos2d-x3.0中Layer的点击事件处理方式,包括如何在Layer中设置事件监听,以及如何在非Layer节点中侦听事件。通过设置`setSwallowsTouches(false)`、`setTouchEnabled(true)`和选择合适的`Touch::DispatchMode`来实现事件的正确分配。
5575

被折叠的 条评论
为什么被折叠?



