cocos2d-x 3beta 2 C++,防止触摸从最顶层渗透到其下面的各层

问题描述 投票:0回答:1

我有简单的层,然后我有第二层,即弹出窗口。当我创建弹出窗口时,当我触摸它时,触摸会从最顶层渗透到其下面的层。

如何防止它,以便当弹出窗口位于顶部时,下面的所有层都不可触及?这是弹出窗口中的触摸代码:

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);
}
c++ cocos2d-x cocos2d-x-3.0
1个回答
0
投票

我认为您使用的是Cocos2DX 3.0版本。我正在使用 cocos2DX 2.2.1,我尝试给出解决方案。

  • 重写CCLayer的“registerWithTouchDispatcher”方法。
  • 指定查看的优先级。 CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, kHIGHEST_TOUCH_PRIORITY, true);
  • kHIGHEST_TOUCH_PRIORITY 指定优先级。最低值具有最高优先级。
  • 完成弹出窗口后,请写下此内容。 CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
© www.soinside.com 2019 - 2024. All rights reserved.