문제
AS3에서는 RGB 색상 (예 : 0xFF0000)과 알파 값 (예 : .5)을 32 비트 ARGB 값으로 변환하는 유틸리티 또는 기능이 있습니까?
그리고 ARGB에서 RGB + 알파까지?
일부 설명 : BitMapData는 생성자에서 ARGB 값을 취할 수 있지만 스프라이트의 채우기는 일반적으로 RGB 값을 취합니다. 앞서 언급 한 유틸리티가 색상이 일치하도록하기를 원합니다.
해결책
var argb : int = (alpha<<24)|rgb;
var rgb : int = 0xFFFFFF & argb;
var alpha : int = (argb>>24)&0xFF;
다른 팁
A, R, G, B는 비디오 카드에서 "텍스처 블렌딩"및 텍스처의 투명성을 허용하기 위해 사용되는 일반적인 형식입니다. 대부분의 시스템은 R, G 및 B에 8BIT 만 사용하므로 PC에서 흔한 32 비트 단어 크기에서 8BITS를 추가로 남겨 둡니다.
The mapping is:
For Bits:
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210
AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
00000000 RRRRRRRR GGGGGGGG BBBBBBBB
이 같은:
private function toARGB(rgb:uint, newAlpha:uint):uint{
var argb:uint = 0;
argb = (rgb);
argb += (newAlpha<<24);
return argb;
}
private function toRGB(argb:uint):uint{
var rgb:uint = 0;
argb = (argb & 0xFFFFFF);
return rgb;
}
알파를 8 비트로 표현할 수 있다면 가능합니다. 예를 들어 해당 변수에 대한 32 비트 ArgB 값의 각 영역을 매핑하십시오.
0x0abcdef1
알파 -0x0a
빨간색 -0xBC
녹색 -0xde
파란색 -0xf1
private function combineARGB(a:uint,r:uint,g:uint,b:uint):uint {
return ( (a << 24) | ( r << 16 ) | ( g << 8 ) | b );
}
위의 훌륭한 답변에 더 많은 것을 추가 할 수는 없지만 더 단순하게 말하면 알파 값은 UINT의 마지막 두 자리입니다.
//white
var white:uint = 0xFFFFFF;
//transparent white
var transparent:uint = 0xFFFFFFFF;
척도는 평소와 같이 00 = 1 ff = 0입니다.
도움이 되었기를 바랍니다
제휴하지 않습니다 StackOverflow