实际上,我刚刚完成了一个脚本来执行此操作。诀窍是使用 setInterval() 触发一个函数,该函数在每个点将亮度(例如)增加几个点。然后达到一个高点,又回到原来的颜色。
我用这个函数来改变亮度:
function ColorLuminance(hex, lum) {
// validate hex string
hex = String(hex).replace(/[^0-9a-f]/gi, '');
if (hex.length < 6) {
hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];
}
lum = lum || 0;
// convert to decimal and change luminosity
var rgb = "#",
c, i;
for (i = 0; i < 3; i++) {
c = parseInt(hex.substr(i * 2, 2), 16);
c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16);
rgb += ("00" + c).substr(c.length);
}
return rgb;
}
然后你的任务就是编写一个脚本,比如用 jQuery,就像这样:
$.each(chart.series, function(j, series) {
for (var i = 0.000; i < 1; i += 0.01) {
setTimeout(function() {
series.update({
color: ColorLuminance(curr_color, i)
});
}, 100);
}
});
该功能还没有完全做到,但我即将完成它,所以一旦我解决它就会编辑。