cocos2dx 创建屏蔽层
在刚开始学习 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 更加简便高效。