使用:給觸摸監聽函數設置吞沒事件,使得觸摸上面的層的時候事件不會向下傳遞
方式: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);