用cc.tween实现色彩渐变效果

经常写Bug的都知道,cc.Color中有一个值,如果我们想要一个图片从一个颜色渐变到另一个颜色,去tween这个Color中的值,会发现颜色闪烁,并不能实现渐变效果。
正确的做法是同时改变rgb的值,才能实现颜色柔和地渐变。

cc.tween(node.getComponent(cc.Sprite))
    .to(duration, { color: cc.color(255, 0, 255, 255) },
        {
            progress: (start, end, current, t) => {
                let startColor = cc.Color.fromHEX(cc.color(), (start).toString(16));
                let endColor = cc.Color.fromHEX(cc.color(), (end).toString(16));
                let color = cc.color(
                    startColor.r + (endColor.r - startColor.r) * t,
                    startColor.g + (endColor.g - startColor.g) * t,
                    startColor.b + (endColor.b - startColor.b) * t,
                    startColor.a + (endColor.a - startColor.a) * t,
                );
                let colorNum = parseInt(color.toHEX("#rrggbbaa"), 16);
                return colorNum;
            }
        }
    )
    .start()

你可能感兴趣的:(Cocos,Creator,javascript,前端)