基本上就是一个通过滑动条进行取色,颜色实时渲染到上方的文字中!
实现起来也很简单:
这里用到官方的取色器标准 从上往下 划分7个颜色段,6个区间,每个区间只有单独的R G B 数值变化,把数值记录下来进行百分比分析即可进行取色。
以下是对应上方的颜色段:
TS代码:【使用的引擎cocos creator,代码是通用的】
//注册滑动条事件
onLoad() {
this.slider.node.on('slide', () => {
let p = this.slider.progress;
let color = this.SelectColor(p);
this.text.node.color = cc.color(color.r, color.g, color.b);
}, this);
}
//根据滑动条进度取色
SelectColor(p: number) {
let r = 255;
let g = 0;
let b = 0;
let limit1 = 1 / 6;
let limit2 = 2 / 6;
let limit4 = 4 / 6;
let limit5 = 5 / 6;
//红 -> 粉 -> 蓝 -> 青 -> 绿 -> 黄 -> 红
if (p >= 0 && p <= 1 / 6) {
r = 255;
g = 0;
b = p / limit1 * 255;
} else if (p > 1 / 6 && p <= 2 / 6) {
g = 0;
b = 255;
r = (1 - (p - limit1) / limit1) * 255;
} else if (p > 2 / 6 && p <= 3 / 6) {
r = 0;
b = 255;
g = (p - limit2) / limit1 * 255;
} else if (p > 3 / 6 && p <= 4 / 6) {
r = 0;
g = 255;
b = (1 - (p - 0.5) / limit1) * 255;
} else if (p > 4 / 6 && p <= 5 / 6) {
g = 255;
b = 0;
r = (p - limit4) / limit1 * 255;
} else if (p > 5 / 6 && p <= 6 / 6) {
r = 255;
b = 0;
g = (1 - (p - limit5) / limit1) * 255;
}
return cc.color(r, g, b);
}