![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
|
Цитата:
Если нужно взять цвет из безопасной поллитры, то можно перегнать результат. |
|
|||||
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);//уменьшает яркость кроме того этот класс может менять насыщенность цвета, ну и конвертировать туда и обратно
__________________
Хороший отдых - половина работы. Последний раз редактировалось artcraft; 12.06.2006 в 21:06. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Кто автор кода? Судя по имени класса, название изменено.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Отлично! Осталось привести его в порядок, чтобы не стыдно было использовать...
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Неверное имя класса. Имя с прописной буквы должно начинаться. Отсутствие типизации (местами есть), не объявлен тип метода. И это явно еще не все, это то, что можно увидеть на первый взгляд, без детального разбора.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|