为什么fadeIn之前设置透明度是无效的,会出现闪烁

newLabel.opacity = 0;
newLabel.color.setA(0);
cc.log(newLabel.color.a);
var newLabel = cc.instantiate(this.labelNode);
this.labelNode.parent.addChild(newLabel);
newLabel.runAction(cc.fadeIn(1));

我在fadein之前设置透明度,打印出来是0,但是执行fadein动画的时候缺闪了一下,逐帧发现是透明度255一下变成0,然后再执行fadeIn,那设置透明度是无效了吗,而打印newLabel.color.a这个是255。。。这是什么原因?

https://forum.cocos.com/t/fadein-bug/71024

你上面的那段代码是错的啊。。。你后面又重新创建了一个newLabel,你应该在创建后在设置透明度啊兄弟。。

这个问题依然存在 v2.1.0。
我这边有一个临时解决方案:

  1. 把 runAction 改成 动画 播放
  2. 在动画的第一帧 设置cc.Label.string 属性 将其设置为空
  3. 在动画的第二帧 设置cc.Label.string 属性 将其设置正常文本

待验证方案:
如果一定要用 runAction 可以试试,先把 label string 置为空文本, 过一定时间再设置为 正常文本

runAction方案已经验证,也可以解决这个问题。

升级一下版本,这个问题以及修复过了