首页 > 代码库 > Cocos2dx 关于层的屏蔽

Cocos2dx 关于层的屏蔽

    当我们在用cocos2d-x引擎进行游戏设计时,很多时候有这样一种情况

             我们需要创建一个层A,覆盖住层B,当我们在层A上进行触摸操作时,可能会对层B进行操作。所以我们需要做的是

当层A覆盖住层B时,屏蔽层B的touch事件


摘自某文章

layer屏蔽touch事件

此处有个问题,在popLayer层上触摸,你会发现底层的GameScene会响应。这就需要对popLayer进行touch事件处理屏蔽,不应该传递到底层。

  1. 在inin方法中注册touch事件监听

    1
    2
    3
    4
    5
    6
    7
    8
    //设置触摸事件监听
    auto touchListener = EventListenerTouchOneByOne::create();
    touchListener->onTouchBegan = CC_CALLBACK_2(PopLayer::onTouchBegan, this);
    touchListener->onTouchMoved = CC_CALLBACK_2(PopLayer::onTouchMoved, this);
    touchListener->onTouchEnded = CC_CALLBACK_2(PopLayer::onTouchEnded, this);
    _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener,this);
    // 设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞没
    touchListener->setSwallowTouches(true);
  2. 空实现touch事件的监听函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    boolGameOverLayer::onTouchBegan(Touch* touch, Event* event)
    {
    returntrue;
    }
    voidGameOverLayer::onTouchMoved(Touch* touch, Event* event)
    {
    }
    voidGameOverLayer::onTouchEnded(Touch* touch, Event* event)
    {
    }

Cocos2dx 关于层的屏蔽