cocos2dx 创建屏蔽层

2015年01月23日 10:39 0 点赞 0 评论 更新于 2025-11-21 15:09

在刚开始学习 Cocos2d-x 时,我特别想了解如何创建 Cocos2d 的屏蔽层,于是查找了相关网页。发现这件事其实并不难,所以今天就来和大家分享一下 Cocos2d-x 创建屏蔽层的方法。

传统方法的问题

在创建屏蔽层时,很多人会通过修改优先级来禁止点击事件向下传递。网上大部分资料给出的做法是使用如下代码为层添加一个 addTargetedDelegate

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, -129, true);

不过,这种方法存在一个问题,当不再使用这个层时,还需要在 onExit 事件里将其删除。仅从描述来看,就会让人觉得比较麻烦。

更简便的方法

实际上,Cocos2d-x 里的层本身就具备屏蔽功能,我们只需要修改一些属性即可。具体代码如下:

this->setTouchEnabled(true);
this->setTouchPriority(-129);
this->setTouchMode(kCCTouchesOneByOne);
this->registerWithTouchDispatcher();

通过上述代码的设置,这个层就可以禁止事件向下传递了。由于没有使用 addTargetedDelegate,也就无需在 onExit 事件里进行删除操作,大大简化了开发流程。

综上所述,在 Cocos2d-x 中创建屏蔽层,使用修改层属性的方法会比传统的添加 addTargetedDelegate 更加简便高效。

作者信息

feifeila

feifeila

共发布了 3994 篇文章