使用:给触摸监听函数设置吞没事件,使得触摸上面的层的时候事件不会向下传递
方式:listener->setSwallowTouches(true),不向下触摸
简单点来说,比如有两个sprite ,A 和 B,A在上B在下(位置重叠),触摸A的时候,B不会受到影响
今天在一个场景上添加布景层layer的时候,想要设置触摸吞噬
本以为this->setTouchEnable(true);this->setSwallowsTouches(true);两句话就搞定了,却一直得不到想要的效果。
后来发现仅仅设置可触摸是不行的,需要给他设置触摸监听事件,用设置的监听listener来调用设置触摸吞噬函数。注意:需要实现一个touchBegan,否则vs会报错)
//场景初始函数init()内
auto listener1 = EventListenerTouchOneByOne::create(); listener1->onTouchBegan = CC_CALLBACK_2(AboutLayer::onTouchBegan, this); listener1->setSwallowTouches(true);//设置吞噬按钮 //给Layer添加触摸事件 auto dispatcher = Director::getInstance()->getEventDispatcher(); dispatcher->addEventListenerWithSceneGraphPriority(listener1, this);