前不久在Flex中完成了一个颜色渐变的算法,感觉还不错,便记录下来,通过设置起始颜色值和终止颜色值,返回一个渐变颜色数组,代码如下:
private function ColorsGradient(ColorArray:Array):Array
{
var r:int;
var g:int;
var b:int;
var colorArr:Array=new Array();
var num:Number=255/(ColorArray.length-1); //根据渲染颜色数,获得颜色变化次数
for(var i:int=0;i<ColorArray.length-1;i++)
{
for(var j:int=0;j<num+1;j++)
{
r=ColorArray[i+1].red-ColorArray[i].red;
g=ColorArray[i+1].green-ColorArray[i].green;
b=ColorArray[i+1].blue-ColorArray[i].blue;
r=ColorArray[i].red+r*j/num;
g=ColorArray[i].green+g*j/num;
b=ColorArray[i].blue+b*j/num;
colorArr.push([0,r,g,b]);
}
}
return colorArr;
}
使用方法:
ColorsGradient([new Color(150,255,255),new Color(255,255,150),new Color(255,150,150)]);