비트맵 데이터 복사

Flash Player 9 이상, Adobe AIR 1.0 이상

이미지 간에 비트맵 데이터를 복사하기 위해 clone() , copyPixels() , copyChannel() , draw() , drawWithQuality() ( drawWithQuality 메서드는 Flash Player 11.3 이상, AIR 3.3 이상에서 사용 가능)와 같은 여러 메서드를 사용할 수 있습니다.

clone() 메서드는 이름에서도 알 수 있듯이 비트맵 데이터를 한 BitmapData 객체에서 다른 BitmapData 객체로 복제하거나 샘플링합니다. 이 메서드를 호출하면 BitmapData 객체를 복제한 원본 인스턴스를 똑같이 복제한 새 BitmapData 객체가 반환됩니다.

다음 예제에서는 주황색(부모) 정사각형을 복제한 후 원본 부모 정사각형 옆에 해당 복제본을 배치합니다.

import flash.display.Bitmap; 
import flash.display.BitmapData; 
 
var myParentSquareBitmap:BitmapData = new BitmapData(100, 100, false, 0x00ff3300); 
var myClonedChild:BitmapData = myParentSquareBitmap.clone(); 
 
var myParentSquareContainer:Bitmap = new Bitmap(myParentSquareBitmap); 
this.addChild(myParentSquareContainer); 
 
var myClonedChildContainer:Bitmap = new Bitmap(myClonedChild); 
this.addChild(myClonedChildContainer); 
myClonedChildContainer.x = 110;

copyPixels() 메서드는 BitmapData 객체 간에 픽셀을 복사하는 쉽고 빠른 방법입니다. 이 메서드는 소스 이미지의 사각형 스냅샷( sourceRect 매개 변수로 정의됨)을 가져와서 같은 크기의 다른 사각형 영역으로 복사합니다. 새로 "붙여 넣은" 사각형의 위치는 destPoint 매개 변수 내에 정의됩니다.

copyChannel() 메서드는 소스 BitmapData 객체에서 미리 정의된 색상 채널 값(알파, 빨강, 녹색 또는 파랑)을 샘플링하여 대상 BitmapData 객체의 채널에 복사합니다. 이 메서드를 호출하더라도 대상 BitmapData 객체의 다른 채널은 영향을 받지 않습니다.

draw() drawWithQuality() 메서드는 소스 스프라이트, 동영상 클립 또는 기타 표시 객체의 그래픽 내용을 새 비트맵에 그리거나 렌더링합니다. matrix , colorTransform , blendMode 및 대상 clipRect 매개 변수를 사용하면 새 비트맵이 렌더링되는 방식을 수정할 수 있습니다. 이 메서드는 Flash Player 및 AIR의 벡터 렌더러를 사용하여 데이터를 생성합니다.

draw() 또는 drawWithQuality() 를 호출하면 여기서 설명한 것처럼 소스 객체(스프라이트, 동영상 클립 또는 기타 표시 객체)가 첫 번째 매개 변수로 전달됩니다.

myBitmap.draw(movieClip);

소스 객체가 처음 로드된 후에 색상 및 행렬 등의 변형이 적용된 경우, 이러한 변형은 새 객체로 복사되지 않습니다. 변형을 새 비트맵으로 복사하려면 원본 객체의 transform 속성 값을 새 BitmapData 객체를 사용하는 Bitmap 객체의 transform 속성에 복사해야 합니다.