1. 적당한 이미지 몇개를 flex내 img 폴더에 저장한다 (이름은 img0...img1 식으로...)
2.Documant Class인 BitmapTest를 작성한다.
SuperClass Sprite
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.text.TextField;
[SWF (width="550", height="400", frameRate="36", backgroundColor="0xEEEEEE")]
public class BitmapTest1 extends Sprite
{
[ Embed ( source="./img/img2.jpg")]
private var ImgClass:Class;
private var bitmapData:BitmapData= new BitmapData(550,400,false,0x000000);
private var bitmap:Bitmap= new Bitmap(bitmapData);
private var tf:TextField= new TextField;
public function BitmapTest1()
{
super();
var img:Bitmap= new ImgClass() as Bitmap;
this.addChild(bitmap);
bitmap.y=20;
bitmapData.draw(img);
//디스플레이 오브젝트를 상속받았으므로 비트맵은 마우스 이벤트 쓸 수 없음
//코드힌트에도 없음 스프라이트 하나 만들고 비트맵을 넣고 스프라이트를 이동시키면 됨
//텍스트 필드 붙이기
this.addChild(tf);
tf.height=19;
tf.border=true;
}
}
}
상단에 텍스트박스가 있는 것을 볼 수 있다.
SuperClass Sprite (이미지를 클릭했을 때 컬러값 추출하기 첨가_붉은부분 자세히보기)
package
{
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;
[ SWF( width="550", height="400", frameRate="36", backgroundColor="0xEEEEEE")]
public class BitmapTest1 extends Sprite
{
[ Embed( source="./img/img2.jpg")]
private var ImgClass: Class;
private var bitmapData: BitmapData = new BitmapData( 550, 400, false, 0x000000 );
private var bitmap: Bitmap = new Bitmap( bitmapData );
private var bitmapCase: Sprite = new Sprite();
private var tf: TextField = new TextField();
public function BitmapTest1()
{
super();
var img: Bitmap = new ImgClass() as Bitmap;
this.addChild( bitmapCase );
bitmapCase.addChild( bitmap );
bitmapCase.y = 21;
bitmapData.draw( img );
// 텍스틀 필드 붙이기
this.addChild( tf );
tf.height = 19;
tf.border = true;
bitmapCase.addEventListener( MouseEvent.CLICK, onClick );
}
private function onClick( e: MouseEvent ): void
{
// 0xAARRGGBB
var rgb: uint = this.bitmapData.getPixel( bitmapCase.mouseX, bitmapCase.mouseY );
this.tf.text = rgb.toString( 16 ).toUpperCase();
this.tf.textColor = rgb;
}
}
}
// 현재 화면 카피하는 방법 :::
// 1. BitmapData 생성
// 2. BitmapData를 보여줄 Bitmap을 생성하고 화면에 붙이기
// 3. BitmapData.draw( 카피할화면 )
//비트맵데이타 비트맵 비트맵 케이스 각각 이유와 역할 을 잘 알아야 한다.
// 비트맵
/*
- BitmapData -> Object
- Bitmap -> DisplayObject
- Sprite
화면을 복제하려면, BitmapData.draw()
눈내리는 효과에서 에벡같은 효과를 주고 싶으면 현재의 벡터 기반이 아닌 비트맵으로 전환해준다.
var img: Bitmap = new ImgClass() as Bitmap; 비트맵을 ImgClass라는 이름으로 지정
this.addChild( bitmapCase ); 비트맵케이스를 this에 addChild
bitmapCase.addChild( bitmap ); bitmap을 비트맵케이스에 addChild
bitmapCase.y = 21; 비트멥케이스(비트멥과 비트멥데이터를 포함하고 있다)를 21만큼 y축이동
bitmapData.draw( img ); img를 그리기
=>bitmapCase를 쓴 이유는
마우스로 이미지를 찍었을 때 이미지의 좌표값의 기준을 stage가 아니라 이미지 좌표값으로 하여 정확한 컬러값을 얻기위함이다.
*/
이미지를 찍으면 해당 픽셀 컬러값 코드번호가 텍스트박스에 표시되는 것을 볼 수 있다.