本站文章转载务必在明显处注明:原文链接 http://blog.youkuaiyun.com/cjsen/article/details/17241027
前言
当在场景中使用控件Table时,无法获取在Table中的事件,可以用以下方法解决.
在Table上面加上透明层
在所用Table 上面加上一个透明的Layer,在Layer 中添加侦听事件,并设置不吞食事件this->setSwallowsTouches(false);,事件从Layer中处理..
用cocos2d 3.0新加入的方法 EventListenerTouch
添加事件侦听
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-x中Table控件事件无法正常触发的问题,提供了两种解决方案:一是通过在Table上添加透明Layer并设置事件监听;二是利用Cocos2d-x 3.0新增的EventListenerTouch来实现事件的监听与处理。
650

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



