티스토리 뷰
색상의 알파값(투명도) 16진수계산
액션스크립트나 자바스크립트 여타 프로그래밍에서 16진수로 알파값이 포함될때가 있다.
액션스크립트 기준으로 Bitmap객체를 잠시 설명하면 매개변수가 다음과 같은 차례를 가진다.
width, height, transparnet:Boolean(투명도지원여부), fillColor(기본값은0xFFFFFFFF 흰색)
ㅎ
예1 ) 300 x 300 크기의 불투명 빨간색 BitmapData객체를 만들면 다음과 같다.
var bmpData:BitmapData = new BitmapData(300, 300, false, 0xFF0000); //여기까지는 이해가능
예2 ) 100 x 100 크기의 투명도가 50%인 빨간색 BitmapData객체는 다음과 같다.
var bmpData:BitmapData = new BitmapData(100, 100, true, 0x80FF0000);
transparnet은 투명도의 지원여부이니 true가 맞는데, 색상부분을 보면 80이라는 숫자가 들어간다.
이 0x 부분이 16진수를 뜻하기때문에 투명도도 16진수로 적어줘야 한다.
자, 일단 투명도가 50%일경우 10진수로는 128이고 이를 16진수로는 변환하면 80이 된다.
toString메서드를 이용하여 128을 .toString(16) 해보면 80이 나올것이다.
그런데 우리가 알아야 할 값은 80이 아니라 메서드에 적용시킬 128 이다.
어떻게 해서 10진수인 128이란 값을 얻을수 있을까?
공식화
퍼센트 * 2.55 = 반올림(n)
예1) 투명도가 50%일경우
50 * 2.55 = 127.5
127.5 에서 소수점.5를 반올림하면 128.
128을 toString(16)메서드를 이용하여 16진수로 바꾸면 결과는 80
var num:int = 128; trace(num.toString(16)); //-> 결과80
투명도가 100%일때
예) 100 * 2.55 = 255 를 toString메서드를 이용하여 16진수로 바꾸면 결과는 FF
var num:int = 255; trace(num.toString(16)); //-> 결과FF
함수화
조금 더 나아가서 함수화 해보자.
var myAlpha1:* = hexCode(100); trace(myAlpha1); //ff var myAlpha2:* = hexCode(50); trace(myAlpha2); //80 function hexCode($num:int):* { var num:int = $num; var myHex:int = Math.round((num * 2.55) + 0.1); return myHex.toString(16); }
1,4 : 앞의경우 데이터타입이 문자(FF)일수도, 숫자(80)일수도 있었다. 이 때문에 아직 Type이 정의되지 않은 *(와일드카드)형으로 선언했다.
7 : 함수의 리턴값도 당연히 *
10 : num * 2.55 의 값을 반올림 하는것은 앞에서 설명했다.
그러나.. num = 50 * 2.55 할 경우 값이 우리가 원하는 127.5가 나오는게 아니라 126.499999999999999999.. 가 나온다.
그래서 +0.1 정도로 값을 증가해주어 127.5로 만들어서 반올림해준것이다.
'■ 개발관련 ■ > 산수와 알고리즘' 카테고리의 다른 글
for, while, do~while 세가지 반복문의 쓰임새 (0) | 2013.10.16 |
---|---|
callback 함수란 (0) | 2013.10.16 |
Row(행) 와 Column(열) (0) | 2013.10.13 |
백분율 - %(퍼센트) 구하기 (간단하니 반드시 암기할 것) (0) | 2013.10.13 |
거리,속력,시간 구하기 (0) | 2013.10.13 |