前不久在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)]);