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(это);
Другие вопросы по тегам