现在很多常见的那种新手教程,做一个反向遮罩,遮罩内的按钮可以点击,遮罩外的事件会被拦截,类似下图这种:

现在问题是如果给这个后面的暗色背景加上blockInputEvents结果却会变成只有圆圈范围内的按钮会被拦截,圆圈外的则可正常点击,与需求恰好相反,如何解决这个问题?
1赞
把你这个demo发过来看一下
重新做一层透明的点击接收层在上面
点击接受层怎么做?

BlockInputEvent的实现其实就是给节点注册触摸事件,在回调中stopPropregation停止冒泡。
触摸事件的派送是按照节点树丛子节点到父节点进行冒泡派送,因此触摸事件的顺序为bg1->mask->Canvas。
触点的归属是按照节点树,从父节点到子节点按渲染层级去判断的,所以点击mask的地方时,触点的归属为mask节点下面的bg1节点,然后再冒泡给mask,最后时Canvas,由于bg1有Block组件,所以触摸被拦截了。点击mask外的区域,触点归属判断为按钮,因此按钮响应了点击。
具体的新手引导做法可以在社区中搜索一下,有不少分享可以参考
1赞
社区中其他方法都是曲线救国的方法,没有一种直接有效的吗?比如mask组件除了会遮住图像的效果外 还可以遮挡事件。那么反向遮罩 就可以遮住反区域的图像和事件。就不用再监听mask所在的节点,然后去模拟组件下方按钮的响应了。