tween动画后自身节点以及子节点的监听事件失效

  • Creator 版本:3.6.2 2D版本

  • 目标平台: chrome浏览器

  • 重现方式:
    代码如下:
    clickcnt = 1;
    parentclick(){
    console.log(‘cccccccc’);
    let sc = this.clickcnt % 2;
    tween(this.btnpar).to(0.1, { scale: v3(sc, sc)}).start();
    this.clickcnt++;
    }
    kkkclick(){
    console.log(‘aaaaaaaaaa’);
    }
    acdlick(){
    console.log(‘bbbbbbbbbbb’);
    }

一个有背景的父节点btnpar,其下包含两个子节点kkk和acd,父节点有穿透监听,子节点有点击事件监听。开始父节点scale默认为0,然后对父节点做一次tween动画,使其scale从0到1,完全显示后,发现子节点的点击事件监听消失,父节点的穿透不生效。
新建项目也是会这样。

  • 首个报错: 没有报错

scale.z不能为0,你new Vec3 没传z值,默认为0。论坛好多人踩过这个坑了。

1赞

2d的z不是应该默认是1么,又不会改动的

所以是个坑啊 :rofl:

天坑啊,我要哭了,tween 做 scale 动画我说怎么事件穿透下去了,明明添加了 BlockInputEvents 结果没用,看了6个小时底层代码,从 node-event-processor.ts _handleTouchStart 看到 ui-transform.ts hitTest 再到 node.ts getWorldMatrix,结果怎么改都不对,还以为是 node 的 _transformFlags 标记有bug,结果居然是 z 向量的 bug,阿西吧

这个地方大部分人都被坑过