Просмотр полной версии : работа с цветом \16-ричные цифры
trace((0x7a <<24));
trace((0x8a <<24));
trace((0x9a <<24));
на выходе:
2046820352
-1979711488
-1711276032
или же в 16-ричном виде:
7a000000
-76000000
-66000000
почему так происходит?
как после этого, спрашивается, мне задать цвет в формате 0хAARRGGBB ? исключительно стрингом?
Ну примерно вот так:
var color:uint = 0;
var r, g, b, a:uint;
a = 128;
r = 128;
g = 128;
b = 128;
a = a << 24;
r = r << 16;
g = g << 8;
color = color | a;
trace(color);
color = color | r;
trace(color);
color = color | g;
trace(color);
color = color | b;
trace(color);
2147483648 - 0x80000000
2155872256 - 0x80800000
2155905024 - 0x80808000
2155905152 - 0x80808080
потому что это signed bitwise shift. Это значит, что принимает во внимание знак и работает с int а не uint. Вот ток unsigned left shift не существует, есть только правый...
Я думаю, что в вашей ситуации это поможет:
trace(uint(0x7a <<24));
trace(uint(0x8a <<24));
trace(uint(0x9a <<24));
Да, дело в типе.
Большое спасибо
Alex Lexcuk
25.08.2008, 19:34
>>как после этого, спрашивается, мне задать цвет в формате 0хAARRGGBB ? исключительно стрингом?
Я исключительно стрингом задавал, так легче
var a = 0x77;
var r = 0x66;
var g = 0x60;
var b = 0x06;
var res_color = int("0x"+f_f(a)+f_f(r)+f_f(g)+f_f(b));
trace("Шеснадцатиричный "+res_color.toString(16));
function f_f(ff_color:int)
{
var res_str = "0", w_str = ff_color.toString(16);
if (w_str.length>1) res_str = w_str; else res_str = res_str+w_str; return res_str;
}
на выходе имеем шеснадцатиричный цвет
output
Шеснадцатиричный 77666006
Да, дело в типе.
Большое спасибо
Alex Lexcuk: такой способ тормозной, по сравнению, например с
var col:uint=(newAlpha<<24)+0xFFFFFF
Alex Lexcuk, учите побитовые операции.
var a:uint = 0x77;
var r:uint = 0x66;
var g:uint = 0x60;
var b:uint = 0x06;
var color:uint = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | (b & 0xFF);
trace(color.toString(16));
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.