本站文章转载务必在明显处注明:原文链接 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);
}