最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
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 方法,以确保屏蔽层能正确处理触摸事件。
采用这种方式创建屏蔽层,能让代码更加简洁,减少不必要的操作,提高开发效率。