简单的,一般屏幕只会有一个菜单对话框的小游戏没什么问题,但规模大一些的,比如有三四个对话框重合,并且会切换的,因cocos2d的button不关心自己属于谁,唯一的规则就是哪个button先加进去哪个就先响应,这样就会出错,之前用cocos2d-x时的解决方法是记录所有对话框菜单,在顶层的激活touch,底层的禁用, 激活禁用函数还不能在同一贞调用(会崩)。同时还要配合touch优先级,运行时根据需要修改。 管理起来非常复杂,容易出错。
html5也有这样的问题,我的解决方法是自己重写了个button对象,自己处理所有的touch消息,目前勉强能用。
建议引擎解决方案, 菜单以自己的ContentSize为范围,zorder为优先级,把菜单视为touch实体],进入这个范围的touch消息,如果没有按钮,直接将touch消息吃掉