
Код:
class col {
static function toHSB(rgb:Number):Object{
var r = (rgb >> 16) & 0xFF;
var g = (rgb >> 8) & 0xFF;
var b = rgb & 0xFF;
var hsb = new Object();
hsb.b = Math.max(Math.max(r, g), b);
var min = Math.min(Math.min(r, g), b);
hsb.s = (hsb.b<=0) ? 0 : Math.round(100*(hsb.b-min)/hsb.b);
hsb.b = Math.round((hsb.b/255)*100);
hsb.h = 0;
if ((r == g) && (g == b)) {hsb.h = 0;}
else if (r>=g && g>=b) { hsb.h = 60*(g-b)/(r-b);}
else if (g>=r && r>=b) {hsb.h = 60+60*(g-r)/(g-b);}
else if (g>=b && b>=r) {hsb.h = 120+60*(b-r)/(g-r);}
else if (b>=g && g>=r) {hsb.h = 180+60*(b-g)/(b-r);}
else if (b>=r && r>=g) {hsb.h = 240+60*(r-g)/(b-g);}
else if (r>=b && b>=g) {hsb.h = 300+60*(r-b)/(r-g);}
else { hsb.h = 0; }
hsb.h = Math.round(hsb.h);
return hsb;
}
static function toRGB(hsb:Object):Number {
var r,g,b,rgb;
var h = Math.round(hsb.h);
var s = Math.round(hsb.s*255/100);
var v = Math.round(hsb.b*255/100);
if(s == 0) {
r = g = b = v;
} else {
var t1 = v;
var t2 = (255-s)*v/255;
var t3 = (t1-t2)*(h%60)/60;
if(h==360) h = 0;
if(h<60) {r=t1; b=t2; g=t2+t3}
else if(h<120) {g=t1; b=t2; r=t1-t3}
else if(h<180) {g=t1; r=t2; b=t2+t3}
else if(h<240) {b=t1; r=t2; g=t1-t3}
else if(h<300) {b=t1; g=t2; r=t2+t3}
else if(h<360) {r=t1; g=t2; b=t1-t3}
else {r=0; g=0; b=0}
}
//trace(r+' '+g+' '+b);
rgb = r << 16 | g << 8 | b;
return rgb;
}
static function modRGB(rgb:Number, s:Number, b:Number):Number {
var hsb:Object = col.toHSB(rgb);
hsb.s+=s;
if (hsb.s>100) {hsb.s=100}
if (hsb.s<0) {hsb.s=0}
hsb.b+=b;
if (hsb.b>100) {hsb.b=100}
if (hsb.b<0) {hsb.b=0}
return (col.toRGB(hsb));
}
}
как использовать:

Код:
var color1=0xEEEEEE;
var color2=col.modRGB(color1, 0, 10);//увеличивает яркость
var color3=col.modRGB(color1, 0, -10);//уменьшает яркость
(что происходит: цвет из ргб конвертируется в HSB, меняется яркость и цвет конвертируется обратно )
кроме того этот класс может менять насыщенность цвета, ну и конвертировать туда и обратно