Cocos2dx - 創建半透明層並屏蔽向下觸摸


添加屏蔽層並且吞掉下面頁面的監聽事件

這裏舉例添加兩個不同的屏蔽觸摸監聽

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;

};

addEventListenerWithFixedPriorityaddEventListenerWithSceneGraphPriority 

事件派發器通過優先權來決定先執行哪個監聽器。 

FixedPriority 整形值。低權值的事件監聽器將優於高權值的事件監聽器 

SceneGraphPriority Node的指針。Nodez順序高的(繪製於頂部的)節點將優於z順序低的節點。這將保證了諸如觸碰事件的自頂向下傳播





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章