it leader
article thumbnail


 

 파일사이즈

처리 속도 

벡터 방식 

 작다

 느리다 

비트맵 

 크다 

 빠르다 


# 플래시에서 직접 그린 그림들은 기본적으로 벡터이다

# 플래시에서 불러 온 이미지는 비트맵 방식



bitmapData : 이미지 정보를 저장하고 있는 데이터 ( 2차원 배열과 같은 데이터 )  ==> 눈에 보이지 않는다

bitmap      : bitmapData를 분석해서 화면에 뿌려주는 객체



BitmapData를 보기위해서는 Bitmap에 넣어야 한다.   //Bitmap은 포토샵이나 알씨 같은 이미지 뷰어로 생각하면 된다.


var bitmap : Bitmap =new Bitmap ( bitmapData );


bitmapData.draw ( 객체 )


Bitmap 이 벡터방식에 비해 훨씬 빠르다


## 상속관계 개념 " 진화의 과정 "##




■ Object  : 최상위 객체                 

- int, unit, Number, Boolean, String 을 제외한 나머지 모든 객체는 Object를 상속 받는다.

- var obj:Object = new Object();

- 임의로 변수를 추가 할 수 있다. Dynamic Class

   

   ex)    obj.aaa = 20;

          obj.bbb = 20;


■ EventDispatcher   :  이벤트를 듣거나, 말할 수 있는 객체

- Event ( 말, 편지, 엽서 )

- Dispatch ( 발송하다, 보내다 )  => dispatcher : 발송자, 보내는 사람

- addEventListener(), removeEventListener(), hasEventLister(), dispatchEvent()

- 그냥 Event에만 반응하는 객체 => URLLoader


■ DisplayObject : 눈에 보이는 객체

- Display ( 표시하다 ) + Object ( 객체 )

- x, y, width, height, scaleX, scaleY, visible, rotation, alpha 

- Bitmap, Video


■ InteractiveObject : 사용자에 반응하는 객체

- MouseEvent, KeyboardEvent, FocusEvent .... 이벤트에 반응하는 객체

- TextField, SimpleButton


■ DisplayObjectContainer :

- 자동차 컨테이너, Tv 컨테이너, DisplayObjectContainer => DisplayObject 를 담을 수 있는 객체

- addChild(), removeChild() , contains(), addChildAt ( 객체, index)


■ Sprite

- 프레임이 없는 무비 클립


■ MovieClip

- 애니메이션을 담을 수 있는 프레임을 가진 객체

- 프레임이 있는 Sprite






DisplayObject는  EventDispatcher  Object

상속을 받으므로 관련된 명령어를 사용 할 수 있다.






BitmapDate  Object 의 상속을 받으므로

x ,y, width, scalex, 등등의 명령어는 사용할 수 없다






Bitmap은 → DisplayObject  EventDispatcer  Object의 상속을 받으므로

관련 명령어를 사용 할 수 있으며

addChild, mouseEvent 와 같은 명령어는 사용할 수 없다.





비트맵을 뿌리고  color picker로 pixel 값을 출력하는 예제


var sp : Sprite = new Sprite();

addChild(sp);

sp.addChild(bitmap);


sp.y = 40;

sp.x = 20;


sp.addEventListener( MouseEvent.CLICK, onClick);


function onClick( e: MouseEvent ) : void

{

     var rgb : uint = bitmapData.getPixel (sp.mouseX, sp.mouseY );

color_txt.text = "#" + addZeros(rgb.toString(16).toUpperCase()) ;       //   toString() 은 진수 변환,   toUpperCase()  대문자로 바꿔라

color_txt.textColor = rgb;


//rgb 데이터에서   red. blue. green 값을 각각 추출하는 공식


var blue :  uint = rgb & 0x0000ff;                                     // & 0x0000ff 는 뒤의 두자리를 추출하는 연산자

var green : uint = ( rgb >>8  ) & 0x0000ff;                      // rgb >> 8 은 16진수값을 4번에 1칸 꼴로 오른쪽으로 끌어 당기는  연산자

var red : uint = ( rgb >> 16 ) & 0x0000ff ;                           // 따라서 rgb >> 8은 2칸  rgb >> 16은 4칸을 오른쪽으로 끌어당기고 왼쪽을 0으로채움


var brightness : int = ( red + blue + green ) /3;                      // 0부터 255까지

if( brightness > 128)

{

color_txt.background = true;

color_txt.backgroundColor = 0x000000;

}else{

color_txt.background = true;

color_txt.backgroundColor = 0xffffff;

}

}


function addZeros( str:String ) : String

{

var len : int = 6 - str.length;

for( var i : int =0 ; i < len ; i++)

{

str = "0" +str;

}

return str;

}







profile

it leader

@dev__pixui

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!