【bug】3.8.4 使用UIOpacity实现淡出动画,回收复用后,变成不可见了

  • Creator 版本: 3.8.4

  • 目标平台: 小游戏真机,浏览器

  • 重现方式:

  • 首个报错:

  • 之前哪个版本是正常的: 3.8.3及以前都正常

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统:

  • 重现概率:
    public fadeNode(node:Node,opacity:number, time:number,delay:number,param:any){
    let cpm: UIOpacity = node.getComponent(UIOpacity);
    if (!cpm) {
    cpm = node.addComponent(UIOpacity);
    }
    if (cpm) {
    let tw = tween(cpm);

          if (delay) {
              tw = tw.delay(delay);
          }
          let ret = tw.to(time, { opacity: opacity }).call(() => {
              if (param && param.callback) {
                  param.callback();
              }
          }).start();
          return ret;
      }
    

    }

节点淡入淡出封装。当节点通过 NodePool 回收,并重新复用时, 节点不会再显示了
流程

  1. 创建节点并使用(节点包含Label子节点)
    n.getComponent(UIOpacity).opacity = 255;
    let tween=fadeNode(n,0,0.5,0.3,null);//淡出
    子节点都正常显示并正常淡出
    2.完成后回收节点
    tween.stop();
    nodePoll.put(n);
    3.复用节点 再次使用
    let n=nodePoll.get();
    n.getComponent(UIOpacity).opacity = 255;
    let tween=fadeNode(n,0,0.5,0.3,null);//淡出
    不再显示,屏幕里什么也看不到,但是节点确实已经添加到游戏里了
    注: 代码逻辑没动过,在3.8.3及以前都正常,升级到3.8.4后就出现了。