为什么#FFFFFF00变化到#FFFFFF时,为什么会改变RGB值,而不是只改变Alpha值?
因为这两个00不是表示的Alpha吧,将FFFFFF00在编辑器里对节点赋值,直接无效,只改透明度有.alpha属性吧。
3.x要单独改变Alpha通道有两种方法,一种是添加UIOpacity组件改变opacity的值,一种是在tween的过程中修改color的a值,然后整体赋给Sprite(用变量存color而不是每帧都new一个)
具体原理就是
0xFFFFFF00作为颜色的时候,RGBA通道是通过位运算对应的;
而作为一个数字,它变到0xFFFFFF是线性变化的;
我输出每次变化的颜色分析发现动画系统颜色转换成数字的公式为r + g * 256 + b * 256 ^ 2 + a * 256 ^ 3,所以除了只改变r通道外,都会造成其他通道数值变化,与css动画不同。
我又不想添加UIOpacity组件,我都可以拿到color 属性,就不必要添加一额外组件,我只能这样写了

你把白色的a道通改成0你会发现颜色值变成了#FFFFFF00
提供一个与css颜色变化动画相同的方法

如果cocos官方有相同效果的方法,和我说一声
问一下大家,这里用四舍五入好还是舍去好
四舍五入![]()
舍去![]()
最终结果是一样的,过程有一些区别