如何禁用事件传播到较低级别的层?

时间:2014-04-23 20:11:47

标签: coco2d-x

我使用cocos2d-x 3.0 RC1,我需要以下内容:最顶层应该获取所有事件,并且不应该将事件传播到最顶层下面的层。我不知道如何做到这一点。我试图找出setTouchEnabledsetSwallowTouches但结果为null的内容。

请帮忙。这非常重要。

1 个答案:

答案 0 :(得分:0)

我找到的唯一方法是实现这个:

auto m_touchListenerOneByOne = EventListenerTouchOneByOne::create();
m_touchListenerOneByOne->setSwallowTouches(true);
m_touchListenerOneByOne->onTouchBegan = CC_CALLBACK_2(IntroView::onBoardTouchBegan, this);

_eventDispatcher->addEventListenerWithSceneGraphPriority(m_touchListenerOneByOne, this);

我在图层的init方法中编写的代码。还有这个:

bool IntroView::onBoardTouchBegan(Touch* touch, Event* event)
{
    CCLOG("AAAAAAAAA!");
    return true;
};

当您在onBoardTouchBegan中返回true时,您“消耗”触摸,否则如果图层不消耗触摸,则这些触摸会按优先级传递到下一层。