这个事情我忍了很久了,实在是想吐槽!

使用tween改变一个节点的透明度,这代码真是麻烦,麻烦,麻烦!
如下一个很简单的需求,将本节点的透明度从50渐变到255

let render = this.getComponent(cc.Renderable2D);
let color = cc.color();
color.set(render.color);
color.a = 50;
render.color = color;
cc.tween(color).to(0.25, {a: 255}, {
     onUpdate(target: cc.Color) {
           render.color = target;
     }
}).start();

不知道为啥要搞那么复杂,写了一遍就不想再写第二遍的代码

2赞

这是官方给你一个机会 让你可以写一个 tweenLite.js

:nerd_face: :nerd_face: :nerd_face: :nerd_face:不是有个uiopacity的东西吗

3版本貌似node没有opacity了吧

用UIOpacity组件不就可以了吗

自带了Renderable2D,还用UIOpacity,那是重复添加组件。
UIOpacity 组件参考 · Cocos Creator

的确有些麻烦

let render2d = this.node.getComponent(Renderable2D)
tween(render2d)
    .set({ color: color(render2d.color.r, render2d.color.g, render2d.color.b, 50) })
    .to(0.25, { color: color(render2d.color.r, render2d.color.g, render2d.color.b, 255) })
    .start()

啥?3.x的这么麻烦?还在2.4的路过。cc.tween(node).to(0.25, {opcaty: 255}).start();
2.x的多简洁,这是越搞越复杂了呀。 :sleepy:

1赞

我也无语的很,都3.5版本这个问题都还没解决, 不晓得在干什么. 真是头疼.

就是因为节点的属性过多,为了划分清楚才添加各个组件

还是觉得,以前的 action 好用 , cc.fadeOut cc.fadeIn 简洁又高效

拆出来后拆出来的好处,用得多手动封装一下吧

不是tween的问题,3.0后很多属性思想都不一样了,论坛上也挺多人吐槽的。不单是透明度,还有坐标尺寸旋转

ecs带来的一点小瑕疵,我甚至觉得这不是瑕疵。习惯就好了。

3.8.3版本用tween改变sprite的color这种方法做透明度动画有bug,明明没有动颜色RGB这三个通道,只动的透明度A通道,颜色也会全跟着动,整个颜色乱闪,动画停下来最后一帧是正确的,估计官方是将这4个通道换算成一个数了,然后对这个数做线性变化。用UIOpacity就没有这个问题

384应该是解决了

https://blog.csdn.net/weixin_42714632/article/details/139001551
可以用2.x的方式来写3.x