【分享】全局点击事件监听脚本

在不影响Button, ScrollView等UI组件点击的情况下,监听点击事件,不受层级限制,可自定义范围。

编辑器版本是2.4.9,不多废话直接上ts脚本。

GlobalTouchListener.zip (1.2 KB)

使用方式跟cc.Node.on()一模一样,直接
this.globalTouchListener.on(cc.Node.EventType.TOUCH_END,this.onGlobalTouchEnd,this);
this.globalTouchListener.off(cc.Node.EventType.TOUCH_END,this.onGlobalTouchEnd,this);

贴个效果图

gtl

原理我是看的这个帖子

但是我没有彻底地测过,可能会有bug,发现的同学麻烦说一下,我也好改过来。

最后再贴个演示demo

demo.zip (861.1 KB)

1赞
全局点击直接这样更简洁
cc.Canvas.instance.node.on(cc.Node.EventType.TOUCH_END, function (event: cc.Event.EventTouch) {
        
    }, null, true);
2赞

但是这样就不能自定义范围了吧。

某个节点下的全局点击事件,是这个意思?

this.node.on(cc.Node.EventType.TOUCH_END, function (event: cc.Event.EventTouch) {
        
    }, null, true);

比如说我就想监听下半屏的点击事件,然后不影响其它节点点击事件。

这个能监听当前这个界面外的部分么,比如我点击打开一个图片,我想点击除图片外的地方关闭这个图片。

有event参数,我理解判断一下坐标?

这样写 某些情况 [TOUCH_END ,cancel 事件]会被吞噬,无法触发

某个父节点把事件拦截了会无法触发