패키지 | flash.display |
클래스 | public class Bitmap |
상속 | Bitmap DisplayObject EventDispatcher Object |
하위 클래스 | FlexBitmap |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bitmap()
생성자로 만드는 이미지일 수도 있습니다.
Bitmap()
생성자를 사용하면 BitmapData 객체에 대한 참조를 포함하는 Bitmap 객체를 만들 수 있습니다. Bitmap 객체를 만든 다음 부모 DisplayObjectContainer 인스턴스의 addChild()
또는 addChildAt()
메서드를 사용하여 표시 목록에 비트맵을 배치합니다.
Bitmap 객체는 평행 이동 또는 회전 속성과 상관없이 여러 Bitmap 객체 사이에서 BitmapData 참조를 공유할 수 있습니다. 동일한 BitmapData 객체를 참조하는 여러 Bitmap 객체를 만들 수 있으므로, 각 표시 객체 인스턴스에 대한 BitmapData 객체로 인한 메모리 오버헤드 발생 없이 여러 표시 객체가 동일한 복합 BitmapData 객체를 사용할 수 있습니다.
BitmapData 객체는 Bitmap 객체를 통해 벡터 렌더러를 비트맵 채우기 모양으로 사용하거나 더 빠른 픽셀 복사 루틴을 사용하여 화면에 그릴 수 있습니다. 픽셀 복사 루틴은 벡터 렌더러보다 상당히 빠르지만, Bitmap 객체에서 이를 사용하려면 특정 조건을 충족시켜야 합니다.
- Bitmap 객체에 확장, 회전 또는 기울임을 적용할 수 없습니다.
- Bitmap 객체에 색상 변환을 적용할 수 없습니다.
- Bitmap 객체에 블렌드 모드를 적용할 수 없습니다.
- 마스크 레이어 또는
setMask()
메서드를 통해 클리핑을 수행할 수 없습니다. - 이미지 자체는 마스크가 될 수 없습니다.
- 대상 좌표가 전체 픽셀 경계상에 있어야 합니다.
이미지 로드에 사용된 Loader 객체와 다른 도메인에서 Bitmap 객체를 로드하고 Loader 객체의 도메인에 대한 액세스를 허용하는 URL 정책 파일이 없으면 해당 도메인의 스크립트는 Bitmap 객체 또는 그 속성 및 메서드에 액세스할 수 없습니다. 자세한 내용은 Flash Player 개발자 센터 항목(보안)을 참조하십시오.
참고: Bitmap 클래스는 InteractiveObject 클래스의 하위 클래스가 아니므로 마우스 이벤트를 전달할 수 없습니다. 그러나 Bitmap 객체가 포함된 표시 객체 컨테이너의 addEventListener()
메서드는 사용할 수 있습니다.
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
accessibilityProperties : AccessibilityProperties
이 표시 객체의 현재 액세스 가능성 옵션입니다. | DisplayObject | ||
alpha : Number
지정된 객체의 알파 투명도 값을 나타냅니다. | DisplayObject | ||
bitmapData : BitmapData
참조되는 BitmapData 객체입니다. | Bitmap | ||
blendMode : String
사용할 블렌드 모드를 지정하는 BlendMode 클래스 값입니다. | DisplayObject | ||
blendShader : Shader [쓰기 전용]
전경 및 배경을 블렌딩하는 데 사용되는 셰이더를 설정합니다. | DisplayObject | ||
cacheAsBitmap : Boolean
true로 설정된 경우 Flash 런타임은 표시 객체의 내부 비트맵 표현을 캐시합니다. | DisplayObject | ||
cacheAsBitmapMatrix : Matrix
null이 아닌 경우 이 Matrix 객체는 cacheAsBitmap이 true로 설정될 때 표시 객체가 렌더링되는 방법을 정의합니다. | DisplayObject | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
filters : Array
현재 표시 객체와 연관된 각 필터 객체가 들어 있는 인덱싱된 배열입니다. | DisplayObject | ||
height : Number
표시 객체의 높이를 픽셀 단위로 나타냅니다. | DisplayObject | ||
loaderInfo : LoaderInfo [읽기 전용]
이 표시 객체가 속한 파일의 로딩 정보가 포함된 LoaderInfo 객체를 반환합니다. | DisplayObject | ||
mask : DisplayObject
호출하는 표시 객체는 지정된 mask 객체에 의해 마스크 처리됩니다. | DisplayObject | ||
metaData : Object
PlaceObject4 태그를 통해 SWF 파일에 해당 DisplayObject의 인스턴스와 함께 메타데이터가 저장된 경우 DisplayObject 인스턴스의 메타데이터 객체를 가져옵니다. | DisplayObject | ||
mouseX : Number [읽기 전용]
마우스 또는 사용자 입력 장치 위치의 x 좌표를 픽셀로 나타냅니다. | DisplayObject | ||
mouseY : Number [읽기 전용]
마우스 또는 사용자 입력 장치 위치의 y 좌표를 픽셀로 나타냅니다. | DisplayObject | ||
name : String
DisplayObject의 인스턴스 이름을 나타냅니다. | DisplayObject | ||
opaqueBackground : Object
표시 객체를 특정 배경색으로 불투명하게 처리할지 여부를 지정합니다. | DisplayObject | ||
parent : DisplayObjectContainer [읽기 전용]
이 표시 객체가 포함된 DisplayObjectContainer 객체를 나타냅니다. | DisplayObject | ||
pixelSnapping : String
Bitmap 객체가 가장 가까운 픽셀에 물리는지 여부를 제어합니다. | Bitmap | ||
root : DisplayObject [읽기 전용]
로드된 SWF 파일에 있는 표시 객체의 경우, 해당 SWF 파일이 나타내는 표시 목록의 트리 구조 부분에서 맨 위에 위치하는 표시 객체가 루트 속성이 됩니다. | DisplayObject | ||
rotation : Number
DisplayObject 인스턴스가 원점으로부터 회전한 각도입니다. | DisplayObject | ||
rotationX : Number
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 x축 회전한 각도를 나타냅니다. | DisplayObject | ||
rotationY : Number
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 y축 회전한 각도를 나타냅니다. | DisplayObject | ||
rotationZ : Number
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 z축 회전한 각도를 나타냅니다. | DisplayObject | ||
scale9Grid : Rectangle
현재 적용 중인 크기 조절 격자입니다. | DisplayObject | ||
scaleX : Number
등록 포인트에서 적용된 객체의 가로 크기(백분율)를 나타냅니다. | DisplayObject | ||
scaleY : Number
객체의 등록 포인트에서 적용된 객체의 세로 크기(백분율)를 나타냅니다. | DisplayObject | ||
scaleZ : Number
객체의 등록 포인트에서 적용된 객체의 깊이 크기(백분율)를 나타냅니다. | DisplayObject | ||
scrollRect : Rectangle
표시 객체의 스크롤 사각형 경계입니다. | DisplayObject | ||
smoothing : Boolean
비트맵 크기를 조절할 때 매끄럽게 할 것인지 여부를 제어합니다. | Bitmap | ||
stage : Stage [읽기 전용]
표시 객체의 Stage입니다. | DisplayObject | ||
transform : flash.geom:Transform
표시 객체의 행렬, 색상 변환 및 픽셀 경계와 관련된 속성을 가진 객체입니다. | DisplayObject | ||
visible : Boolean
표시 객체가 표시되는지 여부를 나타냅니다. | DisplayObject | ||
width : Number
표시 객체의 폭을 픽셀 단위로 나타냅니다. | DisplayObject | ||
x : Number
부모 DisplayObjectContainer의 로컬 좌표를 기준으로 DisplayObject 인스턴스의 x 좌표를 나타냅니다. | DisplayObject | ||
y : Number
부모 DisplayObjectContainer의 로컬 좌표를 기준으로 DisplayObject 인스턴스의 y 좌표를 나타냅니다. | DisplayObject | ||
z : Number
3D parent 컨테이너를 기준으로 DisplayObject 인스턴스의 z축에 있는 z 좌표 위치를 나타냅니다. | DisplayObject |
메서드 | 정의 주체 | ||
---|---|---|---|
Bitmap 객체를 초기화하여 지정된 BitmapData 객체를 참조하도록 합니다. | Bitmap | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
targetCoordinateSpace 객체의 좌표계를 기준으로 표시 객체의 영역을 정의하는 사각형을 반환합니다. | DisplayObject | ||
대상 좌표 공간 매개 변수에 의해 정의되는 좌표계를 기준으로 모양의 획을 제외하고 표시 객체의 경계를 정의하는 사각형을 반환합니다. | DisplayObject | ||
Point 객체를 Stage 전역 좌표에서 표시 객체의 로컬 좌표로 변환합니다. | DisplayObject | ||
Stage(전역) 좌표의 2차원 점을 3차원 표시 객체(로컬) 좌표로 변환합니다. | DisplayObject | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
표시 객체의 경계 상자를 평가하여 obj 표시 객체의 경계 상자와 겹치거나 교차하는지 확인합니다. | DisplayObject | ||
표시 객체를 평가하여 x 및 y 매개 변수에 의해 지정된 점과 겹치거나 교차하는지 확인합니다. | DisplayObject | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
3차원 표시 객체의 로컬 좌표에 있는 3차원 점을 Stage 전역 좌표의 2차원 점으로 변환합니다. | DisplayObject | ||
Point 객체를 표시 객체의 로컬 좌표에서 Stage 전역 좌표로 변환합니다. | DisplayObject | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
bitmapData | 속성 |
bitmapData:BitmapData
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
참조되는 BitmapData 객체입니다.
구현
public function get bitmapData():BitmapData
public function set bitmapData(value:BitmapData):void
pixelSnapping | 속성 |
pixelSnapping:String
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bitmap 객체가 가장 가까운 픽셀에 물리는지 여부를 제어합니다. PixelSnapping 클래스에 다음과 같은 값이 포함되어 있습니다.
PixelSnapping.NEVER
- 픽셀 물리기가 발생하지 않습니다.PixelSnapping.ALWAYS
- 변형과 관계없이 이미지가 항상 가장 가까운 픽셀에 물립니다.PixelSnapping.AUTO
- 회전이나 기울임 없이 99.9% ~ 100.1% 사이의 배율로 그려진 경우 이미지는 가장 가까운 픽셀에 물립니다. 이 조건이 충족되면 비트맵 이미지는 100% 비율로 그려지고 가장 가까운 픽셀에 물립니다. 내부적으로 이 값을 사용하면 벡터 렌더러를 통해 가장 빠른 속도로 이미지를 그릴 수 있습니다.
구현
public function get pixelSnapping():String
public function set pixelSnapping(value:String):void
smoothing | 속성 |
Bitmap | () | 생성자 |
public function Bitmap(bitmapData:BitmapData = null, pixelSnapping:String = "auto", smoothing:Boolean = false)
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Bitmap 객체를 초기화하여 지정된 BitmapData 객체를 참조하도록 합니다.
매개 변수bitmapData:BitmapData (default = null ) — 참조되는 BitmapData 객체입니다.
| |||
pixelSnapping:String (default = "auto ") — Bitmap 객체가 가장 가까운 픽셀에 물리는지 여부입니다.
| |||
smoothing:Boolean (default = false ) — 비트맵 크기를 조절할 때 매끄럽게 할 것인지 여부입니다. 예를 들어 다음 예제에서는 3배 확대된 동일한 비트맵을 보여 줍니다. 여기서 smoothing 은 false (왼쪽) 및 true (오른쪽)로 설정되었습니다.
|
예제 ( 예제 사용 방법 )
const IMAGE_URL:String = "http://www.helpexamples.com/flash/images/logo.png"; var ldr:Loader = new Loader(); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete); ldr.load(new URLRequest(IMAGE_URL)); var bitmap1:Bitmap; var bitmap2:Bitmap; var bitmap3:Bitmap; var bitmap4:Bitmap; function ldr_complete(evt:Event):void { var bmp:Bitmap = ldr.content as Bitmap; bitmap1 = new Bitmap(bmp.bitmapData); bitmap1.x = 100; bitmap1.y = 100; bitmap1.rotation = 0; addChild(bitmap1); bitmap2 = new Bitmap(bmp.bitmapData); bitmap2.x = 200; bitmap2.y = 100; bitmap2.rotation = 90; addChild(bitmap2); bitmap3 = new Bitmap(bmp.bitmapData); bitmap3.x = 300; bitmap3.y = 100; bitmap3.rotation = 180; addChild(bitmap3); bitmap4 = new Bitmap(bmp.bitmapData); bitmap4.x = 400; bitmap4.y = 100; bitmap4.rotation = 270; addChild(bitmap4); }
threshold()
메서드를 사용한 텍스트를 통과하는 픽셀에는 새 색상이 적용됩니다. 이 작업은 다음 단계를 사용하여 수행됩니다.
- 이미지 파일의 이름과 위치를 나타내는
url
속성이 만들어집니다. - 클래스 생성자가
configureAssets()
메서드를 호출하고 이 메서드는completeHandler()
메서드를 호출합니다. configureAssets()
가 Loader 객체를 만들고 이 객체는completeHandler()
메서드에서 이미지 조작을 완료했을 때 전달되는 이벤트 리스너를 인스턴스화합니다.- 그런 다음
buildChild()
메서드가url
을 전달하여 파일 이름 및 위치를 알리는 새 URLRequest 객체 인스턴스request
를 만듭니다. request
객체가loader.load()
메서드에 전달되고 이 메서드는 표시 객체를 통해 이미지를 메모리에 로드합니다.- 그런 다음 이미지가 표시 목록에 놓이고 즉시 화면의 x = 0, y = 0 좌표에 표시됩니다.
- 그런 다음
completeHandler()
메서드가 다음 작업을 수행합니다.- 두 번째 Loader 객체를 Bitmap 객체와 함께 만들며, 이 Bitmap 객체는 Loader 객체와 함께 초기화됩니다.
- 두 번째 Bitmap 객체인
duplicate
를 만든 뒤duplicateImage()
메서드를 호출하여 원본 이미지의 복제본을 만듭니다. - BitmapData 객체를 만듭니다. 이 객체는
duplicate
객체의 BitmapData 객체에 할당됩니다. - 원본 이미지와 동일한 좌표, 폭, 높이로 초기화된 새 Rectangle 객체를 만듭니다.
- 기본값이 x = 0, y = 0인 새 Point 객체를 만듭니다.
- 다음과 같은 변수를 만듭니다.
operation
: 임계값이 원본 값보다 크거나 같으면 새 색상을 적용합니다.threshold
: 각 픽셀을 비교할 값으로 알파 값이 0xCC인 밝은 회색으로 설정됩니다.color
: 임계값 테스트를 통과한 픽셀에 설정될 색상으로, 이 경우에는 단색 노랑입니다.mask
: 정반대 색상(투명 파랑)으로 설정됩니다.copySource
: false로 설정되어 임계값 테스트를 통과하지 못할 경우 픽셀 값이 복사되지 않음을 나타냅니다. 하지만 이미지는 복제되어 있고 임계값 테스트를 통과한 픽셀만 변경되기 때문에 이 값은 아무 의미가 없습니다.
- 앞서 나온 변수를 사용하여
threshold()
메서드를 호출합니다. 최종 임계값 수식은if (current pixel Value & 0x000000FF) >= (0xCCCCCCCC & 0x000000FF) then set pixel to 0xFFFFFF00
입니다.
참고:
- "로컬 재생 보안"을 "로컬 파일만 액세스"로 설정하고 SWF 파일을 컴파일해야 합니다.
- 이 예제에서는 SWF 파일과 같은 디렉토리에 Image.gif 파일이 있어야 합니다.
- 폭이 최대 80픽셀 정도인 이미지를 사용하는 것이 좋습니다.
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Loader; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash.net.URLRequest; public class BitmapExample extends Sprite { private var url:String = "Image.gif"; private var size:uint = 80; public function BitmapExample() { configureAssets(); } private function configureAssets():void { var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); var request:URLRequest = new URLRequest(url); loader.x = size * numChildren; loader.load(request); addChild(loader); } private function duplicateImage(original:Bitmap):Bitmap { var image:Bitmap = new Bitmap(original.bitmapData.clone()); image.x = size * numChildren; addChild(image); return image; } private function completeHandler(event:Event):void { var loader:Loader = Loader(event.target.loader); var image:Bitmap = Bitmap(loader.content); var duplicate:Bitmap = duplicateImage(image); var bitmapData:BitmapData = duplicate.bitmapData; var sourceRect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height); var destPoint:Point = new Point(); var operation:String = ">="; var threshold:uint = 0xCCCCCCCC; var color:uint = 0xFFFFFF00; var mask:uint = 0x000000FF; var copySource:Boolean = true; bitmapData.threshold(bitmapData, sourceRect, destPoint, operation, threshold, color, mask, copySource); } private function ioErrorHandler(event:IOErrorEvent):void { trace("Unable to load image: " + url); } } }
Tue Jun 12 2018, 03:17 PM Z