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

时间:2014-03-30 13:42:04

标签: c++ cocos2d-x cocos2d-x-3.0

嘿,我有简单的图层,然后我有第二层是弹出窗口
当我创建弹出窗口时,当我触摸它时,触摸从最顶层渗透到它下面的层。
我怎么能阻止它,所以当弹出窗口位于顶部时,下面的所有层都是 碰不得 这是弹出窗口中的触摸代码

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 个答案:

答案 0 :(得分:0)

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

  • 覆盖CCLayer" registerWithTouchDispatcher"方法
  • 指定View的优先级。   CCDirector :: sharedDirector() - > getTouchDispatcher() - > addTargetedDelegate(this,kHIGHEST_TOUCH_PRIORITY,true);
  • kHIGHEST_TOUCH_PRIORITY指定优先级。最低值具有最高优先级。
  • 完成弹出窗口后,请写下此内容。   CCDirector :: sharedDirector() - > getTouchDispatcher() - > removeDelegate(本);