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);
}

person user63898    schedule 30.03.2014    source источник


Ответы (1)


Я думаю, вы используете версию Cocos2DX 3.0. Я использую cocos2DX 2.2.1 в соответствии с тем, что я пытаюсь дать решение.

  • Переопределите метод «registerWithTouchDispatcher» CCLayer.
  • Там укажите приоритет для View. CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(это, kHIGHEST_TOUCH_PRIORITY, true);
  • kHIGHEST_TOUCH_PRIORITY определяет приоритет. Наименьшее значение имеет наивысший приоритет.
  • Когда вы закончите со своим всплывающим окном, напишите это. CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
person Alok Rao    schedule 31.03.2014
comment
Я не предлагаю вам использовать 2. Я просто говорю, что такая же функция может быть и там. - person Alok Rao; 31.03.2014