添加屏蔽層並且吞掉下面頁面的監聽事件
這裏舉例添加兩個不同的屏蔽觸摸監聽
cocos2d::LayerColor *shieldLayer = cocos2d::LayerColor::create(cocos2d::Color4B(0,0,0,0), visibleSize.width, visibleSize.height);
shieldLayer->setAnchorPoint(cocos2d::Vec2::ZERO);
shieldLayer->setPosition(cocos2d::Vec2(0,0));
this->addChild(shieldLayer,0);
auto touchListener = cocos2d::EventListenerTouchOneByOne::create();
touchListener->setSwallowTouches(true);
touchListener->onTouchBegan = CC_CALLBACK_2(classA::shieldLayerTouchBegan,this);
// touchListener->onTouchBegan = callback;第二種方法貌似不是很實用
shieldLayer->getEventDispatcher()->addEventListenerWithSceneGraphPriority(touchListener, shieldLayer);
bool ThenBrickMenu::shieldLayerTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event)
{
cocos2d::log("觸摸了");
return true;
}
auto callback = [](Touch * ,Event *)
{
return true;
};
addEventListenerWithFixedPriority和addEventListenerWithSceneGraphPriority
事件派發器通過優先權來決定先執行哪個監聽器。
FixedPriority 整形值。低權值的事件監聽器將優於高權值的事件監聽器
SceneGraphPriority Node的指針。Node的z順序高的(繪製於頂部的)節點將優於z順序低的節點。這將保證了諸如觸碰事件的自頂向下傳播