3.4.0 eventProcessor api

  • Creator 版本:

eventProcessor 这个api被替换成哪个了呢?

3.4.0 我们推荐直接使用 node 来做节点的事件管理

为了实现事件的节点穿透派发,之前社区有一些临时方案,是通过访问一些 eventProcessor 的私有变量来实现,3.4.0 里我们推荐使用 event.preventSwallow = true 来实现这个需求,

如果要实现事件的节点穿透派发,可以参考下这个 PR 里的使用案例
https://github.com/cocos-creator/engine/pull/9621

event.preventSwallow = true是否只能控制父节点对子节点的透传?而平级节点无效呢?

大佬,我使用的版本为3.4,有两个克隆的物体接收事件,两个物体是透明第有可能相交,我使用了PolygonCollider2D设置了轮廓,使用Intersection2D.pointInPolygon进行判定区域,如果是区域内的不透传事件,不在区域内的不透传,但是压在上面的物体会把事件截住,下面的物体收不到点击事件,代码如下

_onBeginTouch (touch:EventTouch) {

    let touchUILc = touch.getUILocation()
    if (this.planePc2D!=null) {
       console.log(this.planePc2D.worldPoints)
        if (Intersection2D.pointInPolygon(touchUILc, this.planePc2D.worldPoints)){
            // 标记本体已经被选中
            console.log("001 debug《=============点击范围在可选范围以内")
            if (this.node!= null) {
                let pos = this.node.getWorldPosition()
                this.posOffX = pos.x - touchUILc.x
                this.posOffY = pos.y - touchUILc.y
            }
            console.log("001 debug《=============发起移动事件")
            touch.preventSwallow = true;
        } else {
            touch.preventSwallow = false;
        }
    }
}

有效的 123

是有效的,看你的实现逻辑没什么问题,方便提供一下 demo 吗

谢谢大佬,已经解决了
我的问题出在TOUCH_MOVE事件上
如果我不给所有的显示物体增加TOUCH_MOVE事件的处理函数,事件默认会被最外面的物体中断,我把全部的物体都加入判定就解决了这个问题,
再次感谢大佬们的回复,非常荣幸能使用cocos进行开发和能加入这个社区 :grinning:

1赞

两个scrollView嵌套(scrollA、scrollB),scrollB是scrollA自己点,scrollB中有若干子项,子项上有button,触摸发生在button上时,无妨穿透到scrollA

1赞