全屏点击事件监听

直接贴代码。

`

let touchListener = cc.EventListener.create({
        event: cc.EventListener.TOUCH_ONE_BY_ONE,
        swallowTouches: false,
        owner: this,
        onTouchBegan: (event) => {
            // 做你想做的事情
        },
        // onTouchMoved: _touchMoveHandler,
        // onTouchEnded: _touchEndHandler,
        // onTouchCancelled: _touchCancelHandler
  });
  cc.internal.eventManager.addListener(touchListener, -1);

`
起因是因为要每次点击添加特效,但是creator又是冒泡传递事件,兄弟节点不在冒泡范围内。所以只能阅读源码,找到了思路。
先看EventManager的addListener的方法,再看node注册点击事件的方法,然后得出结论,直接监听一个点击事件,然后做一些事情。我是直接copy了node注册事件的方法,改了改,改到能用的程度。

具体思路就是,生成一个单点监听的EventListener实例,然后塞到EventManager里,addListener的第二个参数可以是一个Node类型也可以是数字,如果是数字那么越小优先级越高,-1是最高的,不会被节点点击吞噬。

肯定官方也有更好的写法,但是我看论坛里没,我就帮不会的人节约下时间。

版本是2.4.3

代码我是直接复制引擎里的,略有改动。

5赞

好用,靠谱,我得给你点个大大的赞:+1: