cocos2dx 创建屏蔽层
在 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 事件里进行删除操作。
注意:记得重载 ccTouchBegan 方法,以确保屏蔽层能正确处理触摸事件。
采用这种方式创建屏蔽层,能让代码更加简洁,减少不必要的操作,提高开发效率。