Bitmap이란 픽셀로 이루어진 이미지 데이터를 의미한다.
액션스크립트에서는 이 Bitmap 이미지를 편집하여 사용할 수 있다.
액션스크립트에서 Bitmap을 생성하려면 BitmapData 클래스를 이용하여 생성할 수 있다.
그럼 BitmapData 클래스에 대해 알아보자.
BitmapData
BitmapData 는 display 패키지에 포함되어있다.
BitmapData는 기본적으로 Rectagle을 포함하고 있으며, 픽셀 제한이 있다.
BitmapData 객체의 최대 크기가 8,192픽셀이며 총 픽셀 수는 16,777,216 픽셀을 초과할 수 없다. 따라서 BitmapData 객체의 폭이 8,192 픽셀이면 높이가 2,048 픽셀이어야 한다.
BitmapData 객체 1픽셀은 16진수로 0x00000000 로 나타내며 AARRGGBB로 표현된다.
AA = alpha, RR = red, GG = green, BB = blue 이다.
한 색상은 8bit이고 이것이 ARGB 4개가 하나로 합쳐진 것이므로 32bit 버퍼에 저장된다.
Bitmap 을 생성하기 위해서는 BitmapData 클래스의 BitmapData() 메서드를 이용하면 된다.
BitmapData() 메서드를 이용하여 bitmap을 생성할 수는 있지만 화면에 보여줄 수는 없다.
왜냐면 BitmapData는 DisplayObject가 아니기 때문이다.
지금까지 DisplayObject(눈에 보이는 모든 객체)는 addChild()를 통해 화면에 나타내주었다.
하지만 BitmapData는 DisplayObject가 아니므로 addChild() 할 수 없다.
BitmapData 에서 이미지를 생성하여 로드하는 순간 캡쳐를 뜨고 바로 unload()시키기 때문이다. 여기서 캡쳐는 원본이미지를 핸들링할 수 있는 BitmapData 형태로 바꿔주는 것을 말한다.
플래시에서는 캡쳐를 하면 원본을 캡쳐하고, 이 캡쳐된 비트맵 데이터를 가지고 편집을 한다.
그럼 캡쳐를 어떻게 하냐... BitmapData 클래스의 메서드 중에 draw() 라는 메서드를 이용하면 된다.
Flash Player 또는 AIR 벡터 렌더러를 사용하여 비트맵 이미지에 source라는 파라미터를 그리는 것이다.
여기서 매개변수 IBitmapDrawable은 인터페이스 클래스이다.
IBitmapDrawable (인터페이스 클래스)
눈에 보이는 모든 것들은 DisplayObject를 상속받는다.
DisplayObject는 모든 눈에 보이는 것들을 만든다.
눈에 보이는 모든 것들 : Sprite extends DisplayObject implements IBitmapDrawable
그래서 눈에 보이는 모든 것들은 IBitmapDrawable 인터페이스 클래스를 가지고 있다.
그럼 어떻게 할까? 아래 보이는 계층구조를 한번 살펴보자.
DisplayObject의 하위클래스로 Bitmap 클래가 있다.
그럼 Bitmap 클래스가 또 어떤 기능을 하는지 알아보자.
Bitmap
Bitmap 클래스는 비트맵 이미지를 표시하는 객체이다. 여기서 비트맵 이미지는 Loader클래스를 이용할 수도 있고, Bitmap() 생성자로 만들 수도 있다.
파라미터로 BitmapData를 사용한다.
음...그렇다면 BitmapData 클래스에서 이미지를 생성하고 편집한 걸 Bitmap 클래스가 화면에 보여준다는 말이군..
그럼 예제를 한번 만들어보자.