父节点的透明度会影响子节点mask的渲染。

父节点的透明度会影响子节点mask的渲染。

重现:

节点结构

mask组件

this.parentNode.getComponent(UIOpacity).opacity = 0;  
resources.load("xxx/spriteFrame", SpriteFrame, (err, spriteFrame: SpriteFrame) => {
      if (err) {
          return;
      }
      this.testSp.spriteFrame = spriteFrame;
      this.parentNode.getComponent(UIOpacity).opacity = 255;
 });

现象就是,动态加载的spriteFrame没有渲染到sprite上。
测试是跟mask组件的alphaThreshold有关,但是这个值又必须要用。

今天又遇到子节点使用sprite的fillrange,因为父节点的透明度缓动,无法更新渲染

1赞

确实,我也遇到了

最新的3.4.0也有这个问题吗?

是的,就是用的3.4.0

一样遇到这个问题了,3.4.1也存在。

经过测试,3.4.1同样存在,@jare
其实跟mask没有 关系,是动态加载图片不起作用,经过测试3.4.1一样,这2个版本根本没法使用,以下是失效代码:

resources.load("xxx/spriteFrame", SpriteFrame, (err, spriteFrame: SpriteFrame) => {
      if (err) {
          return;
      }
      this.testSp.spriteFrame = spriteFrame;
 });

或者以下代码一样不起作用:

resources.load("images/sp1", ImageAsset, (err, imageAsset: ImageAsset) => {
            if (err) {
                console.error("出错了:",err);
                return;
            }
            this.childNode.spriteFrame = SpriteFrame.createWithImage(imageAsset);
        });

官方能否每天更新下3.4.1的修复补丁,或者github直接下载最新版是否可行?

管理呢?喂喂喂有人吗

我建议让官方引擎的人把title都换一下,谁负责具体哪一方面的工作,这样方便大家反馈问题,@人出来

你自己可以换滴,不信你试下

我知道啊,就是他们的名字都太随意了,看别人回复的帖子,才能知道谁是引擎组的人,统一一下,才便于找啊

也不是随意,主要他们都用的花名,不是内部人,或者熟悉的那几个大佬,其他开发人员,是记不住的

已知问题,之前漏掉了,已经告知相关人员,尽量会在 3.4.1 上进行修复,给你们带来的不便,感到非常抱歉。

请问3.4.0之前的3.x版本是否是正常的,因为这个功能太重要了,导致3.4.x根本没法用,我这边准备新开项目采用3.x,希望尽快修复

据我知道的版本,3.x应该都有问题

牛牛~~~

貌似我之前用的3.3版本没有这个问题,或者这个问题没有暴露的这么严重,也是这次升级3.4才刚好发现的

这个功能不修复相当严重,跳都跳不过去

不行就先延迟一下,先设置透明度,然后下一帧再改spirte,还是可以绕过去的基本

经过测试,以下方式是可行的,

resources.load("sp1/spriteFrame", SpriteFrame, (err, sp: SpriteFrame) => {
            if (err) {
                console.error("出错了:", err);
                return;
            }
            this.childNode.getComponent(Sprite).spriteFrame = sp;
            console.log("this.childNode:", this.childNode);
        });

不对,上面代码我写错了,应该是先获取Sprite组件才对

额……那你说了半天,跟我们说的压根不是一个问题啊。 我说城门楼子,你说胯骨轴子。