cocos2d-x 3beta 2 C++, предотвращает проникновение касаний от самого верхнего слоя к слоям под ним
Эй, у меня есть простой слой, а затем у меня есть второй слой, который всплывающее окно
когда я создаю всплывающее окно, которое является слоем, когда я касаюсь его, касания просачиваются из самого верхнего слоя в слои под ним.
как я могу предотвратить это, поэтому, когда всплывающее окно находится сверху, все слои под ним недоступны, это код касания во всплывающем окне
void PopupLayerObj::onEnter()
{
Layer::onEnter();
auto listener = EventListenerTouchAllAtOnce::create();
listener->onTouchesBegan = CC_CALLBACK_2(PopupLayerObj::onTouchesBegan, this);
listener->onTouchesMoved = CC_CALLBACK_2(PopupLayerObj::onTouchesMoved, this);
listener->onTouchesEnded = CC_CALLBACK_2(PopupLayerObj::onTouchesEnded, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);
}
1 ответ
Я думаю, что вы используете версию Cocos2DX 3.0. Я использую cocos2DX 2.2.1 согласно тому, что я пытаюсь дать решение.
- Переопределить метод "registerWithTouchDispatcher" CCLayer.
- Там укажите приоритет для просмотра. CCDirector:: sharedDirector () -> getTouchDispatcher () -> addTargetedDelegate (this, kHIGHEST_TOUCH_PRIORITY, true);
- kHIGHEST_TOUCH_PRIORITY указывает приоритет. Наименьшее значение имеет наивысший приоритет.
- Когда вы закончите с всплывающим окном, напишите это. CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(это);