패키지 | flash.filters |
클래스 | public class ShaderFilter |
상속 | ShaderFilter BitmapFilter Object |
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
새 필터를 만들려면 new ShaderFilter()
생성자를 사용해야 합니다. 필터 사용은 필터를 적용할 객체에 따라 달라집니다.
- 동영상 클립, 텍스트 필드, 버튼 및 비디오에 필터를 적용하려면
filters
속성(DisplayObject로부터 상속)을 사용합니다. 객체의filters
속성을 설정해도 객체가 수정되지는 않으며,filters
속성을 지워야 필터를 제거할 수 있습니다. - BitmapData 객체에 필터를 적용하려면
BitmapData.applyFilter()
메서드를 사용합니다. BitmapData 객체에서applyFilter()
를 호출하면 소스 BitmapData 객체와 필터 객체가 사용되고 필터링된 이미지가 결과로 생성됩니다.
표시 객체에 필터를 적용하면 해당 객체의 cacheAsBitmap
속성이 true로 설정됩니다. 모든 필터를 제거하면 cacheAsBitmap
의 원래 값이 복원됩니다.
이 필터에서는 스테이지의 크기를 조절할 수 있습니다. 그러나 전체 크기 조절, 회전 및 기울임은 지원하지 않습니다. 객체 자체의 크기가 조절된 경우(scaleX
및 scaleY
속성이 100%로 설정되지 않은 경우) 필터 효과의 크기는 조절되지 않습니다. 스테이지에서 확대할 때만 크기가 조절됩니다.
결과 이미지가 최대 크기를 초과하는 경우 필터는 적용되지 않습니다. AIR 1.5 및 Flash Player 10에서는 최대값이 8,191픽셀(폭 또는 높이)이며 총 픽셀 수는 16,777,215픽셀을 초과할 수 없습니다. 따라서 이미지의 폭이 8,191픽셀이면 높이가 2,048픽셀 이하여야 합니다. Flash Player 9 이전 버전 및 AIR 1.1 이전 버전에서는 이 제한이 높이 2,880픽셀 및 폭 2,880픽셀입니다. 예를 들어 필터가 적용된 큰 동영상 클립을 확대하는 경우 결과 이미지가 최대 크기를 초과하면 필터가 해제됩니다.
필터와 함께 사용할 Shader 인스턴스를 지정하려면 Shader 인스턴스를 ShaderFilter()
생성자에게 인수로 전달하거나 shader
속성의 값으로 설정해야 합니다.
셰이더 출력이 필터링된 객체의 경계를 넘어 확장되도록 허용하려면 leftExtension
, rightExtension
, topExtension
및 bottomExtension
속성을 사용하십시오.
관련 API 요소
flash.display.DisplayObject.cacheAsBitmap
flash.display.BitmapData.applyFilter()
flash.display.Shader
속성 | 정의 주체 | ||
---|---|---|---|
bottomExtension : int
대상 객체 아래쪽의 픽셀이 늘어난 것입니다. | ShaderFilter | ||
constructor : Object
지정된 객체 인스턴스의 클래스 객체 또는 생성자 함수에 대한 참조입니다. | Object | ||
leftExtension : int
대상 객체 왼쪽의 픽셀이 늘어난 것입니다. | ShaderFilter | ||
rightExtension : int
대상 객체 오른쪽의 픽셀이 늘어난 것입니다. | ShaderFilter | ||
shader : Shader
이 필터에 사용할 셰이더입니다. | ShaderFilter | ||
topExtension : int
대상 객체 위쪽의 픽셀이 늘어난 것입니다. | ShaderFilter |
메서드 | 정의 주체 | ||
---|---|---|---|
ShaderFilter(shader:Shader = null)
새 셰이더 필터를 만듭니다. | ShaderFilter | ||
원본 BitmapFilter 객체를 똑같이 복사한 BitmapFilter 객체를 반환합니다. | BitmapFilter | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object |
bottomExtension | 속성 |
bottomExtension:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
대상 객체 아래쪽의 픽셀이 늘어난 것입니다.
늘어났다는 것은 실행 도중 셰이더에 전달된 대상 객체의 경계를 넘어간 영역을 말합니다. 실행 중에 Flash Player 또는 AIR는 동영상 클립의 일반 경계를 계산하고 leftExtension
, rightExtension
, topExtension
및 bottomExtension
값에 따라 경계를 확장합니다.
기본값: 0.
구현
public function get bottomExtension():int
public function set bottomExtension(value:int):void
leftExtension | 속성 |
leftExtension:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
대상 객체 왼쪽의 픽셀이 늘어난 것입니다.
늘어났다는 것은 실행 도중 셰이더에 전달된 대상 객체의 경계를 넘어간 영역을 말합니다. 실행 중에 Flash Player 또는 AIR는 동영상 클립의 일반 경계를 계산하고 leftExtension
, rightExtension
, topExtension
및 bottomExtension
값에 따라 경계를 확장합니다.
기본값: 0.
구현
public function get leftExtension():int
public function set leftExtension(value:int):void
rightExtension | 속성 |
rightExtension:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
대상 객체 오른쪽의 픽셀이 늘어난 것입니다.
늘어났다는 것은 실행 도중 셰이더에 전달된 대상 객체의 경계를 넘어간 영역을 말합니다. 실행 중에 Flash Player 또는 AIR는 동영상 클립의 일반 경계를 계산하고 leftExtension
, rightExtension
, topExtension
및 bottomExtension
값에 따라 경계를 확장합니다.
기본값: 0.
구현
public function get rightExtension():int
public function set rightExtension(value:int):void
shader | 속성 |
shader:Shader
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
이 필터에 사용할 셰이더입니다.
shader
속성에 지정된 Shader는 한 개 이상의 image4
입력을 지정해야 합니다. 이 입력은 연관된 ShaderInput 객체의 input
속성을 사용하여 코드에 지정할 필요가 없습니다. 대신 필터가 적용된 객체는 자동적으로 첫 번째 입력(index
0인 입력)으로 사용됩니다. 필터로 사용되는 셰이더는 두 개 이상의 입력을 지정할 수 있습니다. 이때 모든 추가 입력은 해당 ShaderInput 인스턴스의 input
속성을 설정하여 지정해야 합니다.
Shader 인스턴스를 이 속성에 지정하면 셰이더가 내부적으로 복사되어 원본 셰이더에 대한 참조가 아닌 이 내부 사본을 필터 작업에 사용합니다. 매개 변수 값, 입력 또는 바이트 코드 변경과 같이 셰이더의 모든 변경 사항은 필터에 사용되는 셰이더 사본에는 적용되지 않습니다. 필터 출력 시 셰이더 변경 사항이 적용되도록 하려면 Shader 인스턴스를 shader
속성에 다시 지정해야 합니다. 모든 필터와 마찬가지로 필터 변경 사항을 적용하려면 ShaderFilter 인스턴스도 표시 객체의 filters
속성에 다시 지정해야 합니다.
구현
public function get shader():Shader
public function set shader(value:Shader):void
topExtension | 속성 |
topExtension:int
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
대상 객체 위쪽의 픽셀이 늘어난 것입니다.
늘어났다는 것은 실행 도중 셰이더에 전달된 대상 객체의 경계를 넘어간 영역을 말합니다. 실행 중에 Flash Player 또는 AIR는 동영상 클립의 일반 경계를 계산하고 leftExtension
, rightExtension
, topExtension
및 bottomExtension
값에 따라 경계를 확장합니다.
기본값: 0.
구현
public function get topExtension():int
public function set topExtension(value:int):void
ShaderFilter | () | 생성자 |
shader
속성으로 사용합니다. 이 코드는 Sprite 인스턴스에 원을 그려 스테이지에 추가합니다. 셰이더가 로드되면 셰이더 필터가 해당 Sprite에 적용됩니다.
이 예제에서는 응용 프로그램의 출력 디렉토리와 동일한 디렉토리에 "gradient.pbj"라는 이름의 셰이더 바이트 코드 파일이 있는 것으로 간주됩니다.
// // Source code for the shader: // <languageVersion : 1.0;> kernel RedGradientFilter < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "Applies a gradient across the red channel of the input image."; > { input image4 src; output pixel4 dst; parameter float width < description: "The width of the image to which the shader is applied."; minValue: 0.0; >; void evaluatePixel() { pixel4 temp = sampleNearest(src, outCoord()); temp.r = 1.0 - (outCoord().x * (1.0 / width)); dst = temp; } } // // ActionScript source code: // package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.filters.ShaderFilter; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class ShaderFilterExample extends Sprite { private var loader:URLLoader; private var s:Sprite; public function ShaderFilterExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("gradient.pbj")); s = new Sprite(); s.graphics.beginFill(0x009900); s.graphics.drawCircle(100, 100, 100); addChild(s); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(loader.data); shader.data.width.value = [s.width]; var gradientFilter:ShaderFilter = new ShaderFilter(shader); s.filters = [gradientFilter]; } } }
Tue Jun 12 2018, 03:17 PM Z