| 패키지 | flash.filters |
| 클래스 | public final class ColorMatrixFilter |
| 상속 | ColorMatrixFilter BitmapFilter Object |
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9 |
참고: RGBA 값의 경우, 최상위 바이트는 빨강 채널 값을 표시하며 그 다음은 녹색, 파랑, 알파 값을 표시합니다.
새 색상 매트릭스 필터를 만들려면 new ColorMatrixFilter() 구문을 사용합니다. 필터 사용은 필터를 적용할 객체에 따라 달라집니다.
filters 속성(DisplayObject로부터 상속)을 사용합니다. 객체의 filters 속성을 설정해도 객체가 수정되지는 않으며, filters 속성을 지워야 필터를 제거할 수 있습니다. BitmapData.applyFilter() 메서드를 사용합니다. BitmapData 객체에서 applyFilter()를 호출하면 소스 BitmapData 객체와 필터 객체가 사용되고 필터링된 이미지가 결과로 생성됩니다.표시 객체에 필터를 적용하면 해당 표시 객체의 cacheAsBitmap 속성이 true로 설정됩니다. 모든 필터를 제거하면 cacheAsBitmap의 원래 값이 복원됩니다.
나타날 이미지의 폭 또는 높이가 2,880픽셀을 초과하면 필터가 적용되지 않습니다. 예를 들어, 필터가 적용된 큰 무비 클립을 확대하는 경우 결과 이미지가 2,880픽셀에 도달하면 필터가 해제됩니다.
참고 사항
| 속성 | 다음에 의해 정의됨 | ||
|---|---|---|---|
![]() | constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다.
| Object | |
| matrix : Array
4 x 5 색상 변환을 적용할 20개 항목을 갖는 배열입니다.
| ColorMatrixFilter | ||
![]() | prototype : Object
[static]
클래스 또는 함수 객체의 프로토타입 객체에 대한 참조입니다.
| Object | |
| 메서드 | 다음에 의해 정의됨 | ||
|---|---|---|---|
|
ColorMatrixFilter(matrix:Array = null)
지정된 매개 변수로 새 ColorMatrixFilter 인스턴스를 초기화합니다.
| ColorMatrixFilter | ||
|
이 필터 객체의 복사본을 반환합니다.
| ColorMatrixFilter | ||
![]() |
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다.
| Object | |
![]() |
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다.
| Object | |
![]() |
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다.
| Object | |
![]() |
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다.
| Object | |
![]() |
지정된 객체의 문자열 표현을 반환합니다.
| Object | |
![]() |
지정된 객체의 프리미티브 값을 반환합니다.
| Object | |
| matrix | 속성 |
matrix:Array [read-write]
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9 |
4 x 5 색상 변환을 적용할 20개 항목을 갖는 배열입니다. matrix 속성은 해당 값을 직접 수정하는 방식으로 변경할 수 없습니다(예: myFilter.matrix[2] = 1;). 대신 배열에 대한 참조를 가져와서 변경한 다음 값을 재설정해야 합니다.
색상 매트릭스 필터는 각 소스 픽셀을 빨강(srcR), 녹색(srcG), 파랑(srcB) 및 알파(srcA) 요소로 분리합니다. 네 채널의 각 결과를 계산하려면 이미지의 각 픽셀 값에 변형 행렬의 값을 곱해야 합니다. -255에서 255 사이의 오프셋을 각 결과(행렬 각 행의 다섯 번째 항목)에 선택적으로 추가할 수 있습니다. 이 필터는 각 색상 요소를 다시 단일 픽셀로 결합하고 그 결과를 기록합니다. 다음 공식에서 a[0]부터 a[19]까지는 matrix 속성에 전달되는 20개 항목을 가진 배열에서 0부터 19까지의 항목에 대응됩니다.
redResult = (a[0] * srcR) + (a[1] * srcG) + (a[2] * srcB) + (a[3] * srcA) + a[4] greenResult = (a[5] * srcR) + (a[6] * srcG) + (a[7] * srcB) + (a[8] * srcA) + a[9] blueResult = (a[10] * srcR) + (a[11] * srcG) + (a[12] * srcB) + (a[13] * srcA) + a[14] alphaResult = (a[15] * srcR) + (a[16] * srcG) + (a[17] * srcB) + (a[18] * srcA) + a[19]
배열의 각 색상 값에서 값 1은 색상 채널의 값을 유지하면서 출력으로 전송되는 채널의 100%와 동일합니다.
연산은 곱하지 않은 색상값에 실행됩니다. 입력 그래픽이 미리 곱해진 색상 값으로 구성된 경우 이러한 값은 이 연산을 위해 자동으로 곱해지지 않은 색상 값으로 변환됩니다.
다음과 같은 두 개의 최적화된 모드를 사용할 수 있습니다.
알파에만 적용 다음과 같이 알파 요소만 조절하는 매트릭스를 필터에 전달하면 필터 성능이 최적화됩니다.
1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 N 0(여기서 N은 0.0에서 1.0 사이)
고속 버전 Intel(r) Pentium 3 이상 및 Apple(r) G4 이상과 같이 SSE/AltiVec 액셀러레이터가 활성화된 프로세서에서만 사용할 수 있습니다. 액셀러레이터는 승수의 수치가 -15.99에서 15.99 사이에 있고 더해지는 수의 수치 a[4], a[9], a[14] 및 a[19]가 -8000에서 8000 사이에 있을 때 사용됩니다.
public function get matrix():Array
public function set matrix(value:Array):void
TypeError — 설정 중인 Array가 null입니다.
|
| ColorMatrixFilter | () | 생성자 |
public function ColorMatrixFilter(matrix:Array = null)
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9 |
지정된 매개 변수로 새 ColorMatrixFilter 인스턴스를 초기화합니다.
매개 변수matrix:Array (default = null) — 4 x 5 행렬로 정렬되어 있는 20개 항목을 갖는 배열입니다.
|
| clone | () | 메서드 |
public override function clone():BitmapFilter
| 언어 버전 : | ActionScript 3.0 |
| Player 버전 : | Flash Player 9 |
이 필터 객체의 복사본을 반환합니다.
반환값BitmapFilter — 원본과 모든 속성이 같은 새 ColorMatrixFilter 인스턴스입니다.
|
buildChild()를 네 번 호출합니다. buildChild()에 대한 첫 번째 호출에서는 null을 인수로 사용하여 첫 번째 인스턴스에 필터를 적용하지 않습니다. 다음 buildChild() 호출부터는 이후의 각 이미지 인스턴스에 서로 다른 색상 매트릭스 필터를 적용하는 함수를 인수로 사용합니다.
buildChild() 함수는 새 Loader 객체를 만들고 이름을 loader로 지정합니다. buildChild()를 호출할 때마다 complete 이벤트를 수신하기 위한 이벤트 리스너를 Loader 객체에 연결하며, 이것은 buildChild()에 전달되는 함수에 의해 처리됩니다.
applyRed(), applyGreen() 및 applyBlue() 함수는 matrix 배열에 여러 다른 값을 사용하여 다양한 효과를 냅니다.
참고: 최상의 결과를 얻으려면 폭이 약 80픽셀인 이미지를 사용하는 것이 좋습니다. 이미지 파일의 이름과 위치는 url 속성에 전달한 값과 일치해야 합니다. 예를 들어, 이 예제에서는 url에 전달된 값이 SWF 파일과 같은 디렉토리에 있는 "Image.jpg"라는 이름의 이미지 파일을 가리킵니다.
package {
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.filters.ColorMatrixFilter;
import flash.net.URLRequest;
public class ColorMatrixFilterExample extends Sprite {
private var size:uint = 140;
private var url:String = "Image.jpg";
public function ColorMatrixFilterExample() {
buildChild(null);
buildChild(applyRed);
buildChild(applyGreen);
buildChild(applyBlue);
}
private function buildChild(loadHandler:Function):void {
var loader:Loader = new Loader();
loader.x = numChildren * size;
loader.y = size;
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
if (loadHandler != null) {
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadHandler);
}
var request:URLRequest = new URLRequest(url);
loader.load(request);
addChild(loader);
}
private function applyRed(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = new Array();
matrix = matrix.concat([1, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, 0, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, 0, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
applyFilter(child, matrix);
}
private function applyGreen(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = new Array();
matrix = matrix.concat([0, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, 1, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, 0, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
applyFilter(child, matrix);
}
private function applyBlue(event:Event):void {
var child:DisplayObject = DisplayObject(event.target.loader);
var matrix:Array = new Array();
matrix = matrix.concat([0, 0, 0, 0, 0]); // red
matrix = matrix.concat([0, 0, 0, 0, 0]); // green
matrix = matrix.concat([0, 0, 1, 0, 0]); // blue
matrix = matrix.concat([0, 0, 0, 1, 0]); // alpha
applyFilter(child, matrix);
}
private function applyFilter(child:DisplayObject, matrix:Array):void {
var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix);
var filters:Array = new Array();
filters.push(filter);
child.filters = filters;
}
private function ioErrorHandler(event:IOErrorEvent):void {
trace("Unable to load image: " + url);
}
}
}
이 페이지에 의견 추가되면 전자 메일 알림 받기 | 의견 보고서
현재 페이지: http://livedocs.adobe.com/flash/9.0_kr/ActionScriptLangRefV3/flash/filters/ColorMatrixFilter.html