Cocos2dx 关于层的屏蔽

本文详细介绍了在使用cocos2d-x引擎进行游戏设计时,如何通过设置触摸事件监听和调整优先级来实现层间触摸事件的屏蔽与正确处理,确保上层操作不会干扰到下层的交互体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    当我们在用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
    bool GameOverLayer::onTouchBegan(Touch* touch, Event* event)
    {
    return true;
    }
    void GameOverLayer::onTouchMoved(Touch* touch, Event* event)
    {
    }
    void GameOverLayer::onTouchEnded(Touch* touch, Event* event)
    {
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值