패키지 | flash.display |
클래스 | public class DisplayObject |
상속 | DisplayObject EventDispatcher Object |
구현 | IBitmapDrawable |
하위 클래스 | AVM1Movie, Bitmap, InteractiveObject, MorphShape, Shape, StaticText, Video |
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
DisplayObject 클래스는 객체의 x 및 y 위치 같은 기본 기능뿐 아니라 변형 행렬 등의 고급 객체 속성을 지원합니다.
DisplayObject는 추상 기본 클래스이므로 이를 직접 호출할 수 없습니다. new DisplayObject()
를 호출하면 ArgumentError
예외가 발생합니다.
모든 표시 객체는 DisplayObject 클래스에서 상속됩니다.
DisplayObject 클래스 자체에는 화면에 내용을 렌더링하는 API가 포함되지 않습니다. 따라서 DisplayObject 클래스의 사용자 정의 하위 클래스를 만드는 경우 Shape, Sprite, Bitmap, SimpleButton, TextField 또는 MovieClip 클래스와 같이 화면에 내용을 렌더링하는 API를 포함하는 해당 하위 클래스 중 하나를 확장합니다.
DisplayObject 클래스에는 몇 가지 브로드캐스트 이벤트가 들어 있습니다. 일반적으로 특정 이벤트의 대상은 구체적인 DisplayObject 인스턴스입니다. 예를 들어 added
이벤트의 대상은 표시 목록에 추가된 특정 DisplayObject 인스턴스입니다. 대상이 하나만 있으면 해당 대상에 대한 이벤트 리스너 배치가 제한되고, 표시 목록에서 대상의 조상이 제한되는 경우도 있습니다. 그러나 브로드캐스트 이벤트를 사용하면 대상이 특정 DisplayObject 인스턴스가 아니라 표시 목록에 없는 인스턴스를 포함하여 모든 DisplayObject 인스턴스입니다. 즉, 모든 DisplayObject 인스턴스에 리스너를 추가하여 브로드캐스트 이벤트를 수신할 수 있습니다. DisplayObject 클래스는 DisplayObject 클래스의 이벤트 테이블에 나열된 브로드캐스트 이벤트뿐 아니라 EventDispatcher 클래스의 두 가지 브로드캐스트 이벤트인 activate
및 deactivate
도 상속합니다.
ActionScript 1.0 및 2.0 MovieClip, TextField, Button 클래스에서 이전에 사용된 일부 속성(예: _alpha
, _height
, _name
, _width
, _x
, _y
등)은 ActionScript 3.0 DisplayObject 클래스에서도 동일하지만, 밑줄(_) 문자로 시작하지 않도록 이름이 변경되었습니다.
자세한 내용은 ActionScript 3.0 개발자 안내서의 "디스플레이 프로그래밍" 장을 참조하십시오.
관련 API 요소
속성 | 정의 주체 | ||
---|---|---|---|
accessibilityProperties : AccessibilityProperties
이 표시 객체의 현재 액세스 가능성 옵션입니다. | DisplayObject | ||
alpha : Number
지정된 객체의 알파 투명도 값을 나타냅니다. | DisplayObject | ||
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 | ||
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 | ||
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 |
메서드 | 정의 주체 | ||
---|---|---|---|
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 |
이벤트 | 요약 | 정의 주체 | ||
---|---|---|---|---|
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다. | EventDispatcher | |||
표시 객체를 표시 목록에 추가할 때 전달됩니다. | DisplayObject | |||
표시 객체를 직접 또는 해당 표시 객체가 포함된 하위 트리 추가를 통해 스테이지 표시 목록에 추가할 때 전달됩니다. | DisplayObject | |||
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다. | EventDispatcher | |||
[브로드캐스트 이벤트] 재생 헤드가 새 프레임에 들어갈 때 전달됩니다. | DisplayObject | |||
[브로드캐스트 이벤트] 재생 헤드가 현재 프레임을 종료할 때 전달됩니다. | DisplayObject | |||
[브로드캐스트 이벤트] 프레임 표시 객체의 생성자가 실행되었지만 프레임 스크립트는 아직 실행되지 않았을 때 전달됩니다. | DisplayObject | |||
표시 객체를 표시 목록에서 제거하려고 할 때 전달됩니다. | DisplayObject | |||
표시 객체를 직접 또는 해당 표시 객체가 포함된 하위 트리 제거를 통해 표시 목록에서 제거하려고 할 때 전달됩니다. | DisplayObject | |||
[브로드캐스트 이벤트] 표시 목록이 업데이트 및 렌더링되기 직전에 전달됩니다. | DisplayObject |
accessibilityProperties | 속성 |
accessibilityProperties:AccessibilityProperties
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
이 표시 객체의 현재 액세스 가능성 옵션입니다. accessibilityProperties
속성 또는 accessibilityProperties
의 필드 중 하나를 수정할 경우 Accessibility.updateProperties()
메서드를 호출하여 변경 사항을 적용해야 합니다.
참고: Flash 제작 환경에서 만든 객체의 경우 accessibilityProperties
값은 해당 객체의 액세스 가능성 패널에서 입력한 정보로 미리 채워집니다.
구현
public function get accessibilityProperties():AccessibilityProperties
public function set accessibilityProperties(value:AccessibilityProperties):void
관련 API 요소
예제 ( 예제 사용 방법 )
import flash.text.TextField; import flash.accessibility.AccessibilityProperties; import flash.accessibility.Accessibility; import flash.system.Capabilities; var tf:TextField = new TextField(); tf.text = "hello"; var accessProps:AccessibilityProperties = new AccessibilityProperties(); accessProps.name = "Greeting"; tf.accessibilityProperties = accessProps; if (Capabilities.hasAccessibility) { Accessibility.updateProperties(); } trace(tf.accessibilityProperties.name); // Greeting
alpha | 속성 |
alpha:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
지정된 객체의 알파 투명도 값을 나타냅니다. 유효한 값은 0(완전 투명)에서 1(완전 불투명) 사이입니다. 기본값은 1입니다. alpha
가 0으로 설정된 표시 객체는 눈에 보이지는 않지만 활성화되어 있습니다.
구현
public function get alpha():Number
public function set alpha(value:Number):void
예제 ( 예제 사용 방법 )
alpha
속성을 50%로 설정합니다.
import flash.display.Sprite; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFF0000); circle.graphics.drawCircle(40, 40, 40); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_OVER, dimObject); circle.addEventListener(MouseEvent.MOUSE_OUT, restoreObject); function dimObject(event:MouseEvent):void { event.target.alpha = 0.5; } function restoreObject(event:MouseEvent):void { event.target.alpha = 1.0; }
blendMode | 속성 |
blendMode:String
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
사용할 블렌드 모드를 지정하는 BlendMode 클래스 값입니다. 두 가지 방법을 사용하여 비트맵을 내부에 그릴 수 있습니다. 블렌드 모드를 사용하거나 외부 클리핑 마스크가 있는 경우에는 벡터 렌더링에 채워진 사각형 모양을 추가함으로써 비트맵을 그립니다. 이 속성을 잘못된 값으로 설정하려고 하면 Flash 런타임이 값을 BlendMode.NORMAL
로 설정합니다.
blendMode
속성은 표시 객체의 각 픽셀에 영향을 미칩니다. 각 픽셀은 세 가지 색상 요소(빨강, 녹색 및 파랑)로 구성되고 각 색상 요소는 0x00에서 0xFF 사이의 값을 갖습니다. Flash Player 또는 Adobe AIR에서는 동영상 클립 픽셀의 각 색상 요소와 배경 픽셀의 대응하는 각 색상 요소를 비교합니다. 예를 들어 blendMode
가 BlendMode.LIGHTEN
으로 설정되어 있는 경우 Flash Player 또는 Adobe AIR는 표시 객체의 빨강 값과 배경의 빨강 값을 비교하고 둘 중 더 밝은 색상을 표시된 색상의 빨강 요소에 대한 값으로 사용합니다.
다음 표에서는 blendMode
설정에 대해 설명합니다. BlendMode 클래스는 사용할 수 있는 문자열 값을 정의합니다. 표의 그림은 다른 표시 객체 (1) 위에 놓인 원형 표시 객체 (2)에 적용된 blendMode
값을 보여 줍니다.
BlendMode 상수 | 그림 | 설명 |
---|---|---|
BlendMode.NORMAL | 표시 객체는 배경의 전면에 표시됩니다. 표시 객체의 픽셀 값이 배경의 픽셀 값보다 우선합니다. 표시 객체가 투명한 경우에는 배경이 보입니다. | |
BlendMode.LAYER | 표시 객체에 대한 투명도 그룹이 만들어지도록 합니다. 이는 표시 객체가 더 처리되기 전에 임시 버퍼에서 미리 구성됨을 의미합니다. 이 작업은 표시 객체가 비트맵 캐시를 사용하여 미리 캐시된 경우 또는 표시 객체가 BlendMode.NORMAL 이외의 blendMode 설정을 갖는 자식 객체를 하나 이상 포함하는 표시 객체 컨테이너인 경우 자동으로 수행됩니다. GPU 렌더링에서는 지원되지 않습니다.
| |
BlendMode.MULTIPLY | 표시 객체의 색상 요소 값에 배경색의 색상 요소를 곱하고 0xFF로 나누어 정규화하면 보다 어두운 색상이 됩니다. 이 설정은 그림자 및 깊이 효과에 주로 사용됩니다.
예를 들어 특정한 표시 객체 픽셀의 색상 요소(예: 빨강)와 해당하는 배경 픽셀의 색상 값이 모두 0x88이라면 곱한 결과는 0x4840이 됩니다. 0xFF로 나누면 해당 색상 요소의 값 0x48이 나옵니다. 이것은 표시 객체의 색상 또는 배경색보다 어두운 그림자입니다. | |
BlendMode.SCREEN | 표시 객체 색상의 보수(역수)에 배경색 보수를 곱하여 표백 효과를 냅니다. 이 설정은 강조 표시할 때 또는 표시 객체의 검은색 부분을 제거할 때 주로 사용됩니다. | |
BlendMode.LIGHTEN | 표시 객체의 색상 요소와 배경색 중 보다 밝은 색(값이 큰 쪽)을 선택합니다. 이 설정은 superimposing 유형에 주로 사용됩니다.
예를 들어 표시 객체에 RGB 값이 0xFFCC33인 픽셀이 하나 있고 배경 픽셀의 RGB 값은 0xDDF800인 경우, 표시되는 픽셀의 최종 RGB 값은 0xFFF833입니다(0xFF > 0xDD, 0xCC < 0xF8, 0x33 > 0x00 = 33). GPU 렌더링에서는 지원되지 않습니다. | |
BlendMode.DARKEN | 표시 객체의 색상 요소와 배경색 중 보다 어두운 색상(값이 작은 색상)을 선택합니다. 이 설정은 superimposing 유형에 주로 사용됩니다.
예를 들어 표시 객체에 RGB 값이 0xFFCC33인 픽셀이 하나 있고 배경 픽셀의 RGB 값은 0xDDF800인 경우, 표시되는 픽셀의 최종 RGB 값은 0xDDCC00입니다(0xFF > 0xDD, 0xCC < 0xF8, 0x33 > 0x00 = 33). GPU 렌더링에서는 지원되지 않습니다. | |
BlendMode.DIFFERENCE | 표시 객체의 색상 요소를 배경색과 비교하여 둘 중 밝은 색상 값에서 어두운 색상 값을 뺍니다. 이 설정은 보다 강렬한 색상을 내기 위해 주로 사용됩니다.
예를 들어 표시 객체에 RGB 값이 0xFFCC33인 픽셀이 하나 있고 배경 픽셀의 RGB 값은 0xDDF800인 경우, 표시되는 픽셀의 최종 RGB 값은 0x222C33입니다(0xFF - 0xDD = 0x22, 0xF8 - 0xCC = 0x2C, 0x33 - 0x00 = 0x33). | |
BlendMode.ADD | 표시 객체의 색상 요소 값을 배경색에 더하고 올림값 0xFF를 적용합니다. 이 설정은 두 객체 사이에서 색상을 밝게 하는 디졸브를 애니메이션 처리하는 데 주로 사용됩니다.
예를 들어 표시 객체에 RGB 값이 0xAAA633인 픽셀이 하나 있고 배경 픽셀의 RGB 값은 0xDD2200인 경우, 표시되는 픽셀의 최종 RGB 값은 0xFFC833입니다(0xAA + 0xDD > 0xFF, 0xA6 + 0x22 = 0xC8, 0x33 + 0x00 = 0x33). | |
BlendMode.SUBTRACT | 배경색 값에서 표시 객체의 색상 요소 값을 빼고 내림값 0을 적용합니다. 이 설정은 두 객체 사이에서 색상을 어둡게 하는 디졸브를 애니메이션 처리하는 데 주로 사용됩니다.
예를 들어 표시 객체에 RGB 값이 0xAA2233인 픽셀이 하나 있고 배경 픽셀의 RGB 값은 0xDDA600인 경우, 표시되는 픽셀의 최종 RGB 값은 0x338400입니다(0xDD - 0xAA = 0x33, 0xA6 - 0x22 = 0x84, 0x00 - 0x33 < 0x00). | |
BlendMode.INVERT | 배경을 반전시킵니다. | |
BlendMode.ALPHA | 표시 객체에 있는 각 픽셀의 알파 값을 배경에 적용합니다. 부모 표시 객체의 blendMode 를 BlendMode.LAYER 로 설정해야 합니다. 예를 들어 그림에서 부모 표시 객체(흰색 배경)는 blendMode = BlendMode.LAYER 를 가집니다. GPU 렌더링에서는 지원되지 않습니다. | |
BlendMode.ERASE | 표시 객체의 알파 값을 기준으로 배경을 지웁니다. 부모 표시 객체의 blendMode 를 BlendMode.LAYER 로 설정해야 합니다. 예를 들어 그림에서 부모 표시 객체(흰색 배경)는 blendMode = BlendMode.LAYER 를 가집니다. GPU 렌더링에서는 지원되지 않습니다. | |
BlendMode.OVERLAY | 배경의 어두운 정도를 기준으로 각 픽셀의 색상을 조정합니다. 배경이 50% 회색보다 밝으면 표시 객체와 배경색이 차단되어 결과적으로 더 밝아집니다. 배경이 50% 회색보다 어두우면 색상이 곱해져서 결과적으로 더 어두워집니다. 이 설정은 음영 효과에 주로 사용됩니다. GPU 렌더링에서는 지원되지 않습니다. | |
BlendMode.HARDLIGHT | 표시 객체의 어두운 정도를 기준으로 각 픽셀의 색상을 조정합니다. 표시 객체가 50% 회색보다 밝으면 표시 객체와 배경의 색상이 차단되어 결과적으로 더 밝아집니다. 표시 객체가 50% 회색보다 어두우면 색상이 곱해져서 결과적으로 더 어두워집니다. 이 설정은 음영 효과에 주로 사용됩니다. GPU 렌더링에서는 지원되지 않습니다. | |
BlendMode.SHADER | 해당 사항 없음 | 사용자 정의 셰이더 루틴을 사용하여 색상을 조정합니다. 사용되는 셰이더는 blendShader 속성에 할당된 Shader 인스턴스로 지정됩니다. 표시 객체의 blendShader 속성을 Shader 인스턴스로 설정하면 이 표시 객체의 blendMode 속성이 BlendMode.SHADER 로 자동 설정됩니다. 먼저 blendShader 속성을 설정하지 않은 상태에서 blendMode 속성을 BlendMode.SHADER 로 설정하면 blendMode 속성이 BlendMode.NORMAL 로 설정됩니다. GPU 렌더링에서는 지원되지 않습니다. |
구현
public function get blendMode():String
public function set blendMode(value:String):void
관련 API 요소
예제 ( 예제 사용 방법 )
BlendMode.SUBTRACT
로 설정합니다.
import flash.display.Sprite; import flash.display.BlendMode; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF88CC); square.graphics.drawRect(0, 0, 80, 80); addChild(square); var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xAA0022); circle.graphics.drawCircle(40, 40, 40); addChild(circle); circle.addEventListener(MouseEvent.MOUSE_OVER, dimObject); circle.addEventListener(MouseEvent.MOUSE_OUT, restoreObject); function dimObject(event:MouseEvent):void { event.target.blendMode = BlendMode.SUBTRACT; } function restoreObject(event:MouseEvent):void { event.target.blendMode = BlendMode.NORMAL; }
blendShader | 속성 |
blendShader:Shader
[쓰기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
전경 및 배경을 블렌딩하는 데 사용되는 셰이더를 설정합니다. blendMode
속성이 BlendMode.SHADER
로 설정되면 표시 객체를 위한 블렌드 모드 출력을 생성하는 데 지정된 Shader가 사용됩니다.
표시 객체의 blendShader
속성을 Shader 인스턴스로 설정하면 이 표시 객체의 blendMode
속성이 BlendMode.SHADER
로 자동 설정됩니다. blendShader
속성이 설정되면(blendMode
속성을 BlendMode.SHADER
로 설정) blendMode
속성의 값이 변경됩니다. blendMode
속성을 BlendMode.SHADER
로 설정하기만 하면 블렌드 모드가 블렌드 셰이더를 사용하도록 재설정됩니다. 블렌드 모드에 사용되는 셰이더를 변경할 때를 제외하고 이 blendShader
속성은 다시 설정하지 않아도 됩니다.
blendShader
속성에 할당된 Shader는 두 개 이상의 image4
입력을 지정해야 합니다. 이러한 입력은 연관된 ShaderInput 객체의 input
속성을 사용하여 코드에 지정할 필요는 없습니다. 배경 표시 객체는 자동으로 첫 번째 입력에 사용되고(index
가 0인 입력), 전경 표시 객체는 두 번째 입력으로 사용됩니다(index
가 1인 입력). 블렌드 셰이더로 사용되는 셰이더는 두 개 이상의 입력을 지정할 수 있습니다. 이런 경우 추가되는 모든 입력은 해당 ShaderInput 인스턴스의 input
속성을 설정하여 지정해야 합니다.
Shader 인스턴스를 이 속성에 지정하면 해당 셰이더가 내부적으로 복사됩니다. 블렌드 작업은 원본 셰이더에 대한 참조가 아닌 이 내부 사본을 사용합니다. 매개 변수 값, 입력 또는 바이트 코드 변경과 같이 셰이더의 모든 변경 사항은 블렌드 모드에 사용되는 셰이더 사본에는 적용되지 않습니다.
구현
public function set blendShader(value:Shader):void
오류
ArgumentError — 셰이더 출력 유형이 이 작업과 호환되지 않을 때(셰이더가 pixel4 출력을 지정해야 함)
| |
ArgumentError — 셰이더가 두 개 미만의 이미지 입력을 지정하거나 처음 두 입력이 image4 입력이 아닌 경우
| |
ArgumentError — 셰이더가 제공되지 않은 이미지 입력을 지정한 경우
| |
ArgumentError — ByteArray 또는 Vector.<Number> 인스턴스가 입력으로 사용되고 width 및 height 속성이 ShaderInput에 대해 지정되지 않았거나 지정된 값이 입력 객체의 데이터 양과 일치하지 않는 경우. 자세한 내용은 ShaderInput.input 속성을 참조하십시오.
|
관련 API 요소
cacheAsBitmap | 속성 |
cacheAsBitmap:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
true
로 설정된 경우 Flash 런타임은 표시 객체의 내부 비트맵 표현을 캐시합니다. 캐시를 통해 복잡한 벡터 내용이 포함된 표시 객체의 성능이 향상될 수 있습니다.
캐시된 비트맵이 있는 표시 객체의 모든 벡터 데이터는 기본 디스플레이가 아닌 비트맵에 그려집니다. cacheAsBitmapMatrix
가 null이거나 지원되지 않으면 비트맵이 가장 가까운 픽셀 경계에 물리는 확장 및 회전되지 않은 픽셀로 기본 디스플레이에 복사됩니다. 픽셀은 부모 객체와 1대 1로 매핑됩니다. 비트맵의 경계가 변경되면 비트맵은 확장되지 않고 다시 만들어집니다.
cacheAsBitmapMatrix
가 null이 아니며 지원되는 경우, 객체는 해당 행렬을 사용하여 화면에 표시되지 않는 비트맵에 그려지며 해당 렌더링이 확장 및/또는 회전된 결과가 객체를 기본 디스플레이에 그리는 데 사용됩니다.
cacheAsBitmap
속성을 true
로 설정하지 않은 경우에는 내부 비트맵이 만들어지지 않습니다.
cacheAsBitmap
속성을 true
로 설정하고 나면 렌더링이 변경되지는 않지만 표시 객체가 픽셀 물리기를 자동으로 수행합니다. 애니메이션 속도는 벡터 내용의 복잡도에 따라 현저하게 빨라질 수 있습니다.
cacheAsBitmap
속성은 표시 객체에 필터를 적용할 때마다(해당 filter
배열이 비어 있지 않은 경우) 자동으로 true
로 설정되며, 표시 객체에 필터가 적용되어 있는 경우에는 cacheAsBitmap
속성을 false
로 설정해도 해당 표시 객체에 대해 이 속성이 true
로 보고됩니다. 표시 객체의 모든 필터를 지우면 cacheAsBitmap
설정이 최근 설정 내용으로 변경됩니다.
다음과 같은 경우에는 cacheAsBitmap
속성을 true
로 설정해도 표시 객체가 비트맵을 사용하지 않고 벡터 데이터에서 렌더링됩니다.
- 비트맵이 너무 큰 경우. AIR 1.5 및 Flash Player 10에서는 비트맵 이미지의 최대 크기가 8,191픽셀(폭 또는 높이)이며 총 픽셀 수는 16,777,215픽셀을 초과할 수 없습니다. 따라서 비트맵 이미지의 폭이 8,191픽셀이면 높이가 2,048픽셀 이하여야 합니다. Flash Player 9 이전 버전에서는 이 제한이 높이 2,880픽셀 및 폭 2,880픽셀입니다.
- 메모리 초과 오류로 인해 비트맵이 할당되지 못한 경우
cacheAsBitmap
속성은 대부분의 내용이 정적이고 크기 조절 및 회전을 자주 사용하지 않는 동영상 클립에 사용하면 좋습니다. 이러한 동영상 클립에서 cacheAsBitmap
속성을 사용하면 동영상 클립이 변환될 때, 즉 x 및 y 위치가 변경될 때 성능이 향상될 수 있습니다.
구현
public function get cacheAsBitmap():Boolean
public function set cacheAsBitmap(value:Boolean):void
관련 API 요소
예제 ( 예제 사용 방법 )
cacheAsBitmap
속성 값을 추적합니다. 이 값은 필터가 적용되면 true
로 설정됩니다.
import flash.display.Sprite; import flash.filters.DropShadowFilter var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xAA0022); circle.graphics.drawCircle(40, 40, 40); addChild(circle); trace(circle.cacheAsBitmap); // false var filter:DropShadowFilter = new DropShadowFilter(); circle.filters = [filter]; trace(circle.cacheAsBitmap); // true
cacheAsBitmapMatrix | 속성 |
cacheAsBitmapMatrix:Matrix
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 2.0 |
null이 아닌 경우 이 Matrix 객체는 cacheAsBitmap
이 true
로 설정될 때 표시 객체가 렌더링되는 방법을 정의합니다. 응용 프로그램은 이 행렬을 표시 객체의 비트맵 버전을 렌더링할 때 적용되는 변형 행렬로 사용합니다.
AIR 프로파일 지원: 이 기능은 휴대 장치에서는 지원되지만 데스크톱 운영 체제에서는 지원되지 않습니다. AIR for TV 장치에서도 제한적으로 지원됩니다. 특히 AIR for TV 장치에서 크기 조절 및 평행 이동 변형은 지원되지만 회전 및 기울이기 변형은 지원되지 않습니다. 여러 프로파일 간 API 지원에 대한 자세한 내용은 AIR 프로파일 지원을 참조하십시오.
cacheAsBitmapMatrix
가 설정된 경우 평행 이동, 회전, 크기 조절 등 다양한 2D 변형에서 캐시된 비트맵 이미지가 그대로 유지됩니다. 응용 프로그램에서 하드웨어 가속을 사용하는 경우 객체는 비디오 메모리에 텍스처로 저장됩니다. 따라서 GPU에서 지원되는 변형을 객체에 적용할 수 있습니다. GPU는 CPU보다 3배나 빠른 속도로 이러한 변형을 수행할 수 있습니다.
하드웨어 가속을 사용하려면 Flash Professional CS5의 [iPhone 설정] 대화 상자에서 [일반] 탭의 [렌더링]을 [GPU]로 설정합니다. 또는 응용 프로그램 설명자 파일에서 renderMode
속성을 gpu
로 설정합니다. AIR for TV 장치에서는 하드웨어 가속을 사용할 수 있는 경우 자동으로 사용합니다.
예를 들어 다음 코드는 표시 객체의 변형되지 않은 비트맵 표현을 GPU로 보냅니다.
matrix:Matrix = new Matrix(); // creates an identity matrix mySprite.cacheAsBitmapMatrix = matrix; mySprite.cacheAsBitmap = true;
대개는 항등 행렬(new Matrix()
)만으로 충분하지만 축소 행렬 등의 다른 행렬을 사용하여 다른 비트맵을 GPU로 업로드할 수도 있습니다. 예를 들어 다음 예제는 x축과 y축에서 0.5배 축소된 cacheAsBitmapMatrix
행렬을 적용합니다. 그러나 GPU가 사용하는 비트맵 객체가 더 작을 경우, 표기 객체의 transform.matrix 속성에 맞게 크기가 조정됩니다.
matrix:Matrix = new Matrix(); // creates an identity matrix matrix.scale(0.5, 0.5); // scales the matrix mySprite.cacheAsBitmapMatrix = matrix; mySprite.cacheAsBitmap = true;
일반적으로 행렬을 사용할 때는 표시 객체를 응용 프로그램에 나타나는 크기로 바꾸는 행렬을 선택해야 합니다. 예를 들어 1/2로 축소된 스프라이트의 비트맵 버전을 표시할 경우 크기를 1/2로 축소하는 행렬을 사용해야 하고, 현재 치수보다 큰 스프라이트를 표시할 경우 해당 치수만큼 크기를 확대하는 행렬을 사용해야 합니다.
참고: cacheAsBitmapMatrix
속성은 2D 변형에 적합합니다. 3D로 변형을 적용해야 하는 경우에는 객체의 3D 속성을 설정하고 해당 transform.matrix3D
속성을 조작하여 이 작업을 수행할 수 있습니다. 이렇게 하면 응용 프로그램이 GPU 모드를 사용하여 패키지화되는 경우 GPU에서 3D 변형을 객체에 적용할 수 있습니다. cacheAsBitmapMatrix
는 3D 객체에 대해 무시됩니다.
구현
public function get cacheAsBitmapMatrix():Matrix
public function set cacheAsBitmapMatrix(value:Matrix):void
관련 API 요소
예제 ( 예제 사용 방법 )
cacheAsBitmapMatrix
속성을 사용하여 동영상 클립 my_shape
의 비트맵 버전에 변형을 적용합니다.
import flash.geom.Matrix; import flash.display.*; import flash.utils.Timer; var my_shape:MovieClip = new MovieClip(); my_shape.graphics.beginFill(0xCCFF00); my_shape.graphics.drawRect(200, 0, 100, 100); addChild(my_shape); var my_timer:Timer = new Timer(250); my_timer.start(); my_timer.addEventListener(TimerEvent.TIMER, timerHandler); // make sure this Display Object remains cached for all 2D transforms my_shape.cacheAsBitmap = true; my_shape.cacheAsBitmapMatrix = new Matrix(); // rotation variables const initAngle:Number = 0; const pi:Number = 3.142; const incrAngle:Number = pi/10; // scaling variables const initScale:Number = 0.25; const incrScale: Number = 1.1; var initHeight : Number = my_shape.height; var initWidth : Number = my_shape.width; // translation variables var incrX : Number = root.width / 20; var incrY : Number = root.height / 10; // do some initial transforms var tempMat : Matrix = my_shape.transform.matrix; tempMat.rotate(initAngle); tempMat.scale(initScale, initScale); my_shape.transform.matrix = tempMat; function timerHandler(evt:TimerEvent):void { tempMat = my_shape.transform.matrix; tempMat.rotate(incrAngle); tempMat.translate(incrX, incrY); tempMat.scale(incrScale, incrScale); my_shape.transform.matrix = tempMat; // ensure we are still in a reasonable state or reset if(my_shape.height > stage.stageHeight/2) { my_shape.height = initHeight; } if(my_shape.width > stage.stageWidth/2) { my_shape.width = initWidth; } if(my_shape.x > stage.stageWidth) { my_shape.x = 0; } else if (my_shape.x < 0) { my_shape.x = stage.stageWidth; } if(my_shape.y > stage.stageHeight) { my_shape.y = 0; } else if (my_shape.y < 0) { my_shape.y = stage.stageHeight; } }
filters | 속성 |
filters:Array
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
현재 표시 객체와 연관된 각 필터 객체가 들어 있는 인덱싱된 배열입니다. flash.filters 패키지에는 사용 가능한 특정 필터를 정의하는 여러 클래스가 포함되어 있습니다.
필터는 Flash Professional에서 디자인 타임에 적용하거나, 런타임에 ActionScript 코드를 사용하여 적용할 수 있습니다. ActionScript를 사용하여 필터를 적용하려면 전체 filters
배열의 임시 복사본을 만들고, 임시 배열을 수정한 다음 filters
배열에 임시 배열의 값을 다시 지정합니다. 새 filter 객체를 filters
배열에 직접 추가할 수는 없습니다.
ActionScript를 사용하여 필터를 추가하려면 다음 단계를 수행합니다. 여기서 대상 표시 객체의 이름은 myDisplayObject
로 가정합니다.
- 사용자가 선택한 필터 클래스의 생성자 메서드를 사용하여 새 필터 객체를 만듭니다.
myDisplayObject.filters
배열의 값을myFilters
등의 임시 배열에 지정합니다.- 새 필터 객체를
myFilters
임시 배열에 추가합니다. - 임시 배열의 값을
myDisplayObject.filters
배열에 지정합니다.
filters
배열이 정의되어 있지 않으면 임시 배열을 사용할 필요가 없습니다. 대신 사용자가 만든 하나 이상의 필터 객체가 포함된 배열 리터럴을 직접 지정할 수 있습니다. 예제 단원의 첫 번째 예제에서는 정의된 filters
배열과 정의되지 않은 배열을 모두 처리하는 코드를 사용하여 그림자 필터를 추가합니다.
기존 필터 객체를 수정하려면 filters
배열의 복사본을 수정해야 합니다.
filters
배열의 값을myFilters
등의 임시 배열에 지정합니다.- 임시 배열
myFilters
를 사용하여 속성을 수정합니다. 예를 들어 배열에 있는 첫 번째 필터의 품질 속성을 설정하려면myFilters[0].quality = 1;
코드를 사용할 수 있습니다. - 임시 배열의 값을
filters
배열에 지정합니다.
표시 객체에 연결된 필터가 있는 경우 이 표시 객체를 로드 시 투명 비트맵으로 캐시하라는 표시가 나타납니다. 이때부터 표시 객체에 유효한 필터 목록이 있으면 플레이어는 표시 객체를 비트맵으로 캐시합니다. 이 소스 비트맵은 필터 효과에 대한 소스 이미지로 사용됩니다. 일반적으로 각 표시 객체는 필터링되지 않은 원래의 소스 표시 객체와 필터링된 최종 이미지의 두 비트맵을 가집니다. 최종 이미지는 렌더링 시 사용됩니다. 표시 객체가 변경되지 않으면 최종 이미지는 업데이트할 필요가 없습니다.
flash.filters 패키지에는 필터에 대한 클래스가 포함됩니다. 예를 들어 DropShadow 필터를 만들려면 다음을 작성합니다.
import flash.filters.DropShadowFilter var myFilter:DropShadowFilter = new DropShadowFilter (distance, angle, color, alpha, blurX, blurY, quality, inner, knockout)
is
연산자를 사용하여 filter
배열의 각 인덱스 위치에 지정된 필터 유형을 확인할 수 있습니다. 예를 들어 다음 코드는 filters
배열에서 첫 번째 필터(DropShadowFilter)의 위치를 확인합니다.
import flash.text.TextField; import flash.filters.*; var tf:TextField = new TextField(); var filter1:DropShadowFilter = new DropShadowFilter(); var filter2:GradientGlowFilter = new GradientGlowFilter(); tf.filters = [filter1, filter2]; tf.text = "DropShadow index: " + filterPosition(tf, DropShadowFilter).toString(); // 0 addChild(tf) function filterPosition(displayObject:DisplayObject, filterClass:Class):int { for (var i:uint = 0; i < displayObject.filters.length; i++) { if (displayObject.filters[i] is filterClass) { return i; } } return -1; }
참고: 새 filter 객체를 직접 DisplayObject.filters
배열에 추가할 수 없으므로 다음 코드는 myDisplayObject
라는 대상 표시 객체에 아무런 영향을 주지 않습니다.
myDisplayObject.filters.push(myDropShadow);
구현
public function get filters():Array
public function set filters(value:Array):void
오류
ArgumentError — filters 에 ShaderFilter가 포함되어 있고 셰이더 출력 유형이 이 작업과 호환되지 않을 때(셰이더는 pixel4 출력을 지정해야 함)
| |
ArgumentError — filters 에 ShaderFilter가 포함되어 있고 셰이더가 어떠한 이미지 입력도 지정하지 않거나 첫 번째 입력이 image4 입력이 아닌 경우
| |
ArgumentError — filters 에 ShaderFilter가 포함되어 있고 셰이더가 제공되지 않은 이미지 입력을 지정한 경우
| |
ArgumentError — filters 에 ShaderFilter가 포함되어 있고, ByteArray 또는 Vector.<Number> 인스턴스가 셰이더 입력으로 사용되며, width 및 height 속성이 ShaderInput 객체에 대해 지정되지 않았거나 지정된 값이 입력 데이터의 데이터 양과 일치하지 않는 경우. 자세한 내용은 ShaderInput.input 속성을 참조하십시오.
|
관련 API 요소
height | 속성 |
height:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체의 높이를 픽셀 단위로 나타냅니다. 높이는 표시 객체 내용의 경계에 따라 계산됩니다. 다음 코드와 같이 height
속성을 설정하면 그에 따라 scaleY
속성이 조절됩니다.
var rect:Shape = new Shape(); rect.graphics.beginFill(0xFF0000); rect.graphics.drawRect(0, 0, 100, 100); trace(rect.scaleY) // 1; rect.height = 200; trace(rect.scaleY) // 2;
TextField 및 Video 객체를 제외하고 빈 스프라이트처럼 내용이 없는 표시 객체는 height
를 다른 값으로 설정하려고 해도 높이가 0입니다.
구현
public function get height():Number
public function set height(value:Number):void
예제 ( 예제 사용 방법 )
textHeight
속성을 기준으로 height
속성을 조정합니다. 또한 y
속성도 설정하여 두 번째 텍스트 필드를 배치합니다.
import flash.text.TextField; var tf1:TextField = new TextField(); tf1.text = "Text Field 1"; tf1.border = true; tf1.wordWrap = true; tf1.width = 40; tf1.height = tf1.textHeight + 5; addChild(tf1); var tf2:TextField = new TextField(); tf2.text = "Text Field 2"; tf2.border = true; tf2.wordWrap = true; tf2.width = 40; tf2.height = tf2.textHeight + 5; tf2.y = tf1.y + tf1.height + 5; addChild(tf2);
loaderInfo | 속성 |
loaderInfo:LoaderInfo
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이 표시 객체가 속한 파일의 로딩 정보가 포함된 LoaderInfo 객체를 반환합니다. loaderInfo
속성은 SWF 파일의 루트 표시 객체 또는 로드된 비트맵(ActionScript로 그려진 비트맵이 아님)에 대해서만 정의됩니다. myDisplayObject
라는 표시 객체를 포함하는 SWF 파일과 연관된 loaderInfo
객체를 찾으려면 myDisplayObject.root.loaderInfo
를 사용합니다.
대형 SWF 파일은 this.root.loaderInfo.addEventListener(Event.COMPLETE, func)
를 호출하여 다운로드를 모니터링할 수 있습니다.
구현
public function get loaderInfo():LoaderInfo
관련 API 요소
예제 ( 예제 사용 방법 )
this
가 표시 객체를 가리킨다고 가정합니다. 이 코드는 표시 객체에 대한 루트 SWF 파일의 URL을 출력합니다.
trace (this.loaderInfo.url);
mask | 속성 |
mask:DisplayObject
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
호출하는 표시 객체는 지정된 mask
객체에 의해 마스크 처리됩니다. Stage 크기를 조절할 때 마스크를 적용하려면 mask
표시 객체가 표시 목록에서 활성화된 부분에 있어야 합니다. mask
객체 자체는 그려지지 않습니다. 마스크를 제거하려면 mask
를 null
로 설정합니다.
마스크 객체의 크기를 조절하려면 마스크 객체가 표시 목록에 있어야 합니다. startDrag()
메서드를 호출하여 마스크 Sprite 객체를 드래그하려면 해당 객체가 표시 목록에 있어야 합니다. Sprite를 통해 전달되는 mouseDown
이벤트를 기준으로 마스크 Sprite에 대한 startDrag()
메서드를 호출하려면 Sprite의 buttonMode
속성을 true
로 설정합니다.
cacheAsBitmap
속성을 true
로, cacheAsBitmapMatrix
속성을 Matrix 객체로 설정하여 표시 객체를 캐시할 때 마스크되는 표시 객체와 마스크가 모두 캐시되는 동일한 비트맵의 일부여야 합니다. 따라서 표시 객체를 캐시할 때는 마스크가 표시 객체의 자식이어야 합니다. 표시 목록에 있는 표시 객체의 조상을 캐시하면 마스크는 해당 조상 또는 그 후손의 자식이어야 합니다. 마스크 처리된 객체의 조상을 둘 이상 캐시하면 마스크는 표시 목록에서 마스크 처리된 객체와 가장 가까운 캐시 컨테이너의 후손이어야 합니다.
참고: 단일 mask
객체를 사용하여 둘 이상의 호출하는 표시 객체를 마스크 처리할 수는 없습니다. mask
가 두 번째 표시 객체에 지정되면 첫 번째 객체의 마스크가 제거되며 해당 객체의 mask
속성이 null
이 됩니다.
구현
public function get mask():DisplayObject
public function set mask(value:DisplayObject):void
예제 ( 예제 사용 방법 )
drag()
이벤트 리스너 함수가 마스크 Sprite 객체의 startDrag()
메서드를 호출합니다.
import flash.text.TextField; import flash.display.Sprite; import flash.events.MouseEvent; var tf:TextField = new TextField(); tf.text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " + "sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " tf.selectable = false; tf.wordWrap = true; tf.width = 150; addChild(tf); var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 40, 40); addChild(square); tf.mask = square; tf.addEventListener(MouseEvent.MOUSE_DOWN, drag); tf.addEventListener(MouseEvent.MOUSE_UP, noDrag); function drag(event:MouseEvent):void { square.startDrag(); } function noDrag(event:MouseEvent):void { square.stopDrag(); }
metaData | 속성 |
mouseX | 속성 |
mouseX:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
마우스 또는 사용자 입력 장치 위치의 x 좌표를 픽셀로 나타냅니다.
참고: 회전된 DisplayObject인 경우 반환된 x 좌표는 회전되지 않은 객체를 반영합니다.
구현
public function get mouseX():Number
예제 ( 예제 사용 방법 )
mouseX
및 mouseY
위치를 추적합니다.
import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 200, 200); addChild(square); square.addEventListener(MouseEvent.CLICK, traceCoordinates); function traceCoordinates(event:MouseEvent):void { trace(square.mouseX, square.mouseY); }
mouseY | 속성 |
mouseY:Number
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
마우스 또는 사용자 입력 장치 위치의 y 좌표를 픽셀로 나타냅니다.
참고: 회전된 DisplayObject인 경우 반환된 y 좌표는 회전되지 않은 객체를 반영합니다.
구현
public function get mouseY():Number
예제 ( 예제 사용 방법 )
mouseX
및 mouseY
위치를 추적합니다.
import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 200, 200); addChild(square); square.addEventListener(MouseEvent.CLICK, traceCoordinates); function traceCoordinates(event:MouseEvent):void { trace(square.mouseX, square.mouseY); }
name | 속성 |
name:String
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
DisplayObject의 인스턴스 이름을 나타냅니다. 표시 객체 컨테이너의 getChildByName()
메서드를 호출함으로써 부모 표시 객체 컨테이너의 자식 목록에서 객체를 확인할 수 있습니다.
구현
public function get name():String
public function set name(value:String):void
오류
IllegalOperationError — Flash 제작 도구의 타임라인에 배치된 객체에 이 속성을 설정하려는 경우입니다.
|
예제 ( 예제 사용 방법 )
name
속성을 추적합니다.
import flash.display.Sprite; import flash.events.MouseEvent; var circle1:Sprite = new Sprite(); circle1.graphics.beginFill(0xFF0000); circle1.graphics.drawCircle(40, 40, 40); circle1.name = "circle1"; addChild(circle1); circle1.addEventListener(MouseEvent.CLICK, traceName); var circle2:Sprite = new Sprite(); circle2.graphics.beginFill(0x0000FF); circle2.graphics.drawCircle(140, 40, 40); circle2.name = "circle2"; addChild(circle2); circle2.addEventListener(MouseEvent.CLICK, traceName); function traceName(event:MouseEvent):void { trace(event.target.name); }
opaqueBackground | 속성 |
opaqueBackground:Object
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체를 특정 배경색으로 불투명하게 처리할지 여부를 지정합니다. 투명 비트맵은 알파 채널 데이터를 포함하며 투명하게 그려집니다. 불투명 비트맵은 알파 채널을 포함하지 않으며 투명 비트맵보다 빠르게 렌더링됩니다. 비트맵이 불투명인 경우 사용할 고유 배경색을 지정합니다.
배경색을 숫자 값으로 설정하면 그 숫자에 의해 지정되는 RGB 배경색을 사용한 불투명(투명하지 않은) 표면이 생성됩니다. 배경색을 null
(기본값)로 설정하면 표시 객체의 배경은 투명이 됩니다.
opaqueBackground
속성은 렌더링 최적화를 위해 주로 cacheAsBitmap
속성과 함께 사용합니다. cacheAsBitmap
속성이 true로 설정된 표시 객체의 경우 opaqueBackground
를 설정하면 렌더링 성능이 향상될 수 있습니다.
불투명 배경 영역은 shapeFlag
매개 변수를 true
로 설정하여 hitTestPoint()
메서드를 호출할 경우에는 일치하지 않습니다.
불투명 배경 영역은 마우스 이벤트에 응답하지 않습니다.
구현
public function get opaqueBackground():Object
public function set opaqueBackground(value:Object):void
관련 API 요소
예제 ( 예제 사용 방법 )
opaqueBackground
속성을 빨강(0xFF0000)으로 설정합니다.
import flash.display.Shape; var circle:Shape = new Shape(); circle.graphics.beginFill(0x0000FF); circle.graphics.drawCircle(40, 40, 40); circle.opaqueBackground = 0xFF0000; addChild(circle);
parent | 속성 |
parent:DisplayObjectContainer
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이 표시 객체가 포함된 DisplayObjectContainer 객체를 나타냅니다. parent
속성을 사용하여 표시 목록 계층 구조에서 현재 표시 객체의 상위 표시 객체에 대한 상대 경로를 지정합니다.
다음과 같이 parent
를 사용하여 표시 목록에서 여러 레벨 위로 이동할 수 있습니다.
this.parent.parent.alpha = 20;
구현
public function get parent():DisplayObjectContainer
오류
SecurityError — 부모 표시 객체가 사용자가 액세스할 수 없는 보안 샌드박스에 속합니다. 이러한 상황을 피하려면 부모 동영상에서 Security.allowDomain() 메서드를 호출하도록 합니다.
|
예제 ( 예제 사용 방법 )
parent
속성이 표시 목록 계층 구조를 반영하는 방법을 보여 줍니다.
import flash.display.Sprite; var sprite1:Sprite = new Sprite(); sprite1.name = "sprite1"; var sprite2:Sprite = new Sprite(); sprite2.name = "sprite2"; var sprite3:Sprite = new Sprite(); sprite3.name = "sprite3"; sprite1.addChild(sprite2); sprite2.addChild(sprite3); trace(sprite2.parent.name); // sprite1 trace(sprite3.parent.name); // sprite2 trace(sprite3.parent.parent.name); // sprite1
root | 속성 |
root:DisplayObject
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
로드된 SWF 파일에 있는 표시 객체의 경우, 해당 SWF 파일이 나타내는 표시 목록의 트리 구조 부분에서 맨 위에 위치하는 표시 객체가 root
속성이 됩니다. 로드된 이미지 파일을 나타내는 Bitmap 객체의 경우 Bitmap 객체 자체가 root
속성이 됩니다. 처음으로 로드된 SWF 파일의 기본 클래스 인스턴스의 경우 표시 객체 자체가 root
속성이 됩니다. Stage 객체의 root
속성은 Stage 객체 자체입니다. 표시 목록을 벗어나지만 로드된 SWF 파일 맨 위에 있는 표시 객체의 자식인 표시 객체 컨테이너에 표시 객체를 추가하지 않는 한 해당 표시 목록에 추가하지 않은 모든 표시 객체는 root
속성이 null
로 설정됩니다.
예를 들어 Sprite()
생성자 메서드를 호출하여 새 Sprite 객체를 만드는 경우 표시 목록(또는 해당 표시 목록을 벗어나지만 로드된 SWF 파일 맨 위에 있는 표시 객체의 자식인 표시 객체 컨테이너)에 이 객체를 추가하지 않는 한 객체의 root
속성은 null
입니다.
로드된 SWF 파일의 경우 파일을 로드하는 데 사용된 Loader 객체가 표시 목록에 없을 수도 있지만, SWF 파일 맨 위에 있는 표시 객체는 그 값이 객체 자체로 설정된 root
속성을 갖습니다. root
속성이 설정되는 대상 표시 객체의 자식으로 추가되지 않으면 Loader 객체는 해당 root
속성을 설정하지 않습니다.
구현
public function get root():DisplayObject
예제 ( 예제 사용 방법 )
root
속성의 차이를 보여 줍니다.
import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; trace(stage.root); // [object Stage] var ldr:Loader = new Loader(); trace (ldr.root); // null addChild(ldr); trace (ldr.root); // [object ...] var urlReq:URLRequest = new URLRequest("example.jpg"); ldr.load(urlReq); ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); function loaded(event:Event):void { trace(ldr.content.root); // [object Bitmap] }
rotation | 속성 |
rotation:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
DisplayObject 인스턴스가 원점으로부터 회전한 각도입니다. 0~180 사이의 값은 시계 방향 회전을 나타내고 0~-180 사이의 값은 시계 반대 방향 회전을 나타냅니다. 이 범위를 벗어나는 값은 360을 더하거나 빼서 범위 내의 값을 구합니다. 예를 들어 my_video.rotation = 450
문은 my_video.rotation = 90
문과 같습니다.
구현
public function get rotation():Number
public function set rotation(value:Number):void
예제 ( 예제 사용 방법 )
import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(-50, -50, 100, 100); square.x = 150; square.y = 150; addChild(square); square.addEventListener(MouseEvent.CLICK, rotate); function rotate(event:MouseEvent):void { square.rotation += 15; }
rotationX | 속성 |
rotationX:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 x축 회전한 각도를 나타냅니다. 0~180 사이의 값은 시계 방향 회전을 나타내고 0~-180 사이의 값은 시계 반대 방향 회전을 나타냅니다. 이 범위를 벗어나는 값은 360을 더하거나 빼서 범위 내의 값을 구합니다.
구현
public function get rotationX():Number
public function set rotationX(value:Number):void
예제 ( 예제 사용 방법 )
rotationX
및 rotationY
속성을 사용하여 두 타원을 회전합니다. 첫 번째 타원의 등록 포인트는 타원의 중심으로 설정되어 있으므로 자신을 중심으로 회전합니다. 두 번째 타원은 외부 점을 중심으로 회전합니다.
package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.display.Graphics; import flash.events.TimerEvent; import flash.utils.Timer; public class RotationExample1 extends MovieClip { private var ellipse:Shape = new Shape(); private var speed:int = 10; private var ellipse1:Shape; private var ellipse2:Shape; public function RotationExample1():void { ellipse1 = drawEllipse(-50, -40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); ellipse2 = drawEllipse(30, 40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); this.addChild(ellipse1); this.addChild(ellipse2); var t:Timer = new Timer(50); t.addEventListener(TimerEvent.TIMER, timerHandler); t.start(); } private function drawEllipse(x1, y1, x2, y2):Shape { var e:Shape = new Shape(); e.graphics.beginFill(0xFF0000); e.graphics.lineStyle(2); e.graphics.drawEllipse(x1, y1, 100, 80); e.graphics.endFill(); e.x = x2; e.y = y2; e.z = 1; return e; } private function timerHandler(event:TimerEvent):void { ellipse1.rotationY += speed; ellipse1.rotationX -= speed; ellipse2.rotationY += speed; ellipse2.rotationX -= speed; } } }
//Requires: // - Slider control UI component in Flash library. // - Publish for Flash Player 10. // [SWF(width="400", height="300")] import fl.controls.Slider; import fl.controls.SliderDirection; import fl.events.SliderEvent; var slider:Slider = new Slider(); slider.direction = SliderDirection.HORIZONTAL; slider.minimum = 0; slider.maximum = 360; slider.value = 45; slider.tickInterval = 45; slider.snapInterval = 1; slider.liveDragging = true; slider.addEventListener(SliderEvent.CHANGE, slider_change); slider.move(10, 10); addChild(slider); var spr:Sprite = new Sprite(); spr.graphics.lineStyle(2, 0xFF0000); spr.graphics.drawRect(0, 0, 100, 80); spr.x = Math.round((stage.stageWidth - spr.width)/2); spr.y = Math.round((stage.stageHeight - spr.height)/2); spr.rotationX = 45; addChild(spr); function slider_change(evt:SliderEvent):void { spr.rotationX = evt.value; }
rotationY | 속성 |
rotationY:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 y축 회전한 각도를 나타냅니다. 0~180 사이의 값은 시계 방향 회전을 나타내고 0~-180 사이의 값은 시계 반대 방향 회전을 나타냅니다. 이 범위를 벗어나는 값은 360을 더하거나 빼서 범위 내의 값을 구합니다.
구현
public function get rotationY():Number
public function set rotationY(value:Number):void
예제 ( 예제 사용 방법 )
rotationX
및 rotationY
속성을 사용하여 두 타원을 회전합니다. 첫 번째 타원의 등록 포인트는 타원의 중심으로 설정되어 있으므로 자신을 중심으로 회전합니다. 두 번째 타원은 외부 점을 중심으로 회전합니다.
package { import flash.display.MovieClip; import flash.display.Shape; import flash.geom.*; import flash.display.Graphics; import flash.events.TimerEvent; import flash.utils.Timer; public class RotationExample1 extends MovieClip { private var ellipse:Shape = new Shape(); private var speed:int = 10; private var ellipse1:Shape; private var ellipse2:Shape; public function RotationExample1():void { ellipse1 = drawEllipse(-50, -40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); ellipse2 = drawEllipse(30, 40, (this.stage.stageWidth / 2), (this.stage.stageHeight / 2)); this.addChild(ellipse1); this.addChild(ellipse2); var t:Timer = new Timer(50); t.addEventListener(TimerEvent.TIMER, timerHandler); t.start(); } private function drawEllipse(x1, y1, x2, y2):Shape { var e:Shape = new Shape(); e.graphics.beginFill(0xFF0000); e.graphics.lineStyle(2); e.graphics.drawEllipse(x1, y1, 100, 80); e.graphics.endFill(); e.x = x2; e.y = y2; e.z = 1; return e; } private function timerHandler(event:TimerEvent):void { ellipse1.rotationY += speed; ellipse1.rotationX -= speed; ellipse2.rotationY += speed; ellipse2.rotationX -= speed; } } }
rotationZ | 속성 |
rotationZ:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
DisplayObject 인스턴스가 3D parent 컨테이너를 기준으로 원점으로부터 z축 회전한 각도를 나타냅니다. 0~180 사이의 값은 시계 방향 회전을 나타내고 0~-180 사이의 값은 시계 반대 방향 회전을 나타냅니다. 이 범위를 벗어나는 값은 360을 더하거나 빼서 범위 내의 값을 구합니다.
구현
public function get rotationZ():Number
public function set rotationZ(value:Number):void
scale9Grid | 속성 |
scale9Grid:Rectangle
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
현재 적용 중인 크기 조절 격자입니다. null
로 설정된 경우 크기 조절 변형을 적용하면 전체 표시 객체의 크기가 정상적으로 조절됩니다.
scale9Grid
속성을 정의하면 표시 객체가 격자의 중심을 정의하는 scale9Grid
사각형을 기준으로 9개의 영역이 있는 격자로 분리됩니다. 격자의 나머지 8개 영역은 다음과 같습니다.
- 사각형 밖의 왼쪽 위 모서리
- 사각형 위쪽 영역
- 사각형 밖의 오른쪽 위 모서리
- 사각형의 왼쪽 영역
- 사각형의 오른쪽 영역
- 사각형 밖의 왼쪽 아래 모서리
- 사각형 아래쪽 영역
- 사각형 밖의 오른쪽 아래 모서리
중심 바깥쪽에 있는 8개 영역(사각형에 의해 정의됨)은 크기를 조절할 때 특별한 규칙이 적용된 그림 프레임으로 간주할 수 있습니다.
scale9Grid
속성이 설정된 상태에서 표시 객체의 크기를 조절하면 모든 텍스트와 그래디언트의 크기가 정상적으로 조절되지만 다른 유형의 객체에는 다음과 같은 규칙이 적용됩니다.
- 가운데 영역의 내용은 정상적으로 크기 조절됩니다.
- 모서리의 내용은 크기 조절되지 않습니다.
- 위쪽과 아래쪽 영역의 내용은 가로 방향으로만 크기가 조절됩니다. 왼쪽과 오른쪽 영역의 내용은 세로 방향으로만 크기가 조절됩니다.
- 모든 채우기(비트맵, 비디오, 그래디언트 포함)가 확장되어 해당 모양에 맞춰집니다.
표시 객체가 회전되면 이후의 모든 크기 조절은 정상적으로 수행되며 scale9Grid
속성은 무시됩니다.
예를 들어 다음과 같이 표시 객체와 이 표시 객체의 scale9Grid
속성으로 적용되는 사각형을 생각해 볼 수 있습니다.
표시 객체입니다. |
빨간색 사각형이 |
표시 객체의 크기를 조절하거나 확장하는 경우 사각형 안의 객체는 정상적으로 크기가 조절되지만 사각형 밖의 객체는 scale9Grid
규칙에 따라 크기가 조절됩니다.
75%로 크기 조절 | |
50%로 크기 조절 | |
25%로 크기 조절 | |
가로로 150% 확장 |
scale9Grid
설정은 구성 요소로 사용할 표시 객체를 설정하는 데 주로 사용되며, 구성 요소의 크기를 조절할 때 가장자리 영역은 같은 폭을 유지합니다.
구현
public function get scale9Grid():Rectangle
public function set scale9Grid(value:Rectangle):void
오류
ArgumentError — 유효하지 않은 인수를 메서드로 전달하는 경우입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
graphics
속성에서 그려진 사각형을 갖는 Shape 객체를 만듭니다. 사각형은 테두리로 20픽셀 두께의 선을 사용하며 그래디언트로 채워집니다. 타이머 이벤트가 scale()
함수를 호출하고 이 함수는 scaleX
및 scaleY
속성을 조정하여 Shape 객체의 크기를 조절합니다. Shape 객체에 적용된 scale9Grid
는 사각형의 테두리 선 크기가 조절되지 않도록 하며 그래디언트 채우기의 크기만 조절되도록 합니다.
import flash.display.Shape; import flash.display.GradientType; import flash.display.SpreadMethod; import flash.display.InterpolationMethod; import flash.geom.Matrix; import flash.geom.Rectangle; import flash.utils.Timer; import flash.events.TimerEvent; var square:Shape = new Shape(); square.graphics.lineStyle(20, 0xFFCC00); var gradientMatrix:Matrix = new Matrix(); gradientMatrix.createGradientBox(15, 15, Math.PI, 10, 10); square.graphics.beginGradientFill(GradientType.RADIAL, [0xffff00, 0x0000ff], [100, 100], [0, 0xFF], gradientMatrix, SpreadMethod.REFLECT, InterpolationMethod.RGB, 0.9); square.graphics.drawRect(0, 0, 100, 100); var grid:Rectangle = new Rectangle(20, 20, 60, 60); square.scale9Grid = grid ; addChild(square); var tim:Timer = new Timer(100); tim.start(); tim.addEventListener(TimerEvent.TIMER, scale); var scaleFactor:Number = 1.01; function scale(event:TimerEvent):void { square.scaleX *= scaleFactor; square.scaleY *= scaleFactor; if (square.scaleX > 2.0) { scaleFactor = 0.99; } if (square.scaleX < 1.0) { scaleFactor = 1.01; } }
scaleX | 속성 |
scaleX:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
등록 포인트에서 적용된 객체의 가로 크기(백분율)를 나타냅니다. 기본 등록 포인트는 (0,0)입니다. 1.0은 100% 크기와 같습니다.
로컬 좌표계의 크기를 조절하면 전체 픽셀에 정의된 x
및 y
속성 값이 변경됩니다.
구현
public function get scaleX():Number
public function set scaleX(value:Number):void
예제 ( 예제 사용 방법 )
graphics
속성에서 그려진 사각형을 갖는 Sprite 객체를 만듭니다. 사용자가 Sprite 객체를 클릭하면 크기가 10% 확대됩니다.
import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(0, 0, 100, 100); addChild(square); square.addEventListener(MouseEvent.CLICK, scale); function scale(event:MouseEvent):void { square.scaleX *= 1.10; square.scaleY *= 1.10; }
scaleY | 속성 |
scaleY:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
객체의 등록 포인트에서 적용된 객체의 세로 크기(백분율)를 나타냅니다. 기본 등록 포인트는 (0,0)입니다. 1.0은 100% 크기와 같습니다.
로컬 좌표계의 크기를 조절하면 전체 픽셀에 정의된 x
및 y
속성 값이 변경됩니다.
구현
public function get scaleY():Number
public function set scaleY(value:Number):void
예제 ( 예제 사용 방법 )
graphics
속성에서 그려진 사각형을 갖는 Sprite 객체를 만듭니다. 사용자가 Sprite 객체를 클릭하면 크기가 10% 확대됩니다.
import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(0, 0, 100, 100); addChild(square); square.addEventListener(MouseEvent.CLICK, scale); function scale(event:MouseEvent):void { square.scaleX *= 1.10; square.scaleY *= 1.10; }
scaleZ | 속성 |
scrollRect | 속성 |
scrollRect:Rectangle
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9 |
표시 객체의 스크롤 사각형 경계입니다. 표시 객체는 사각형에 의해 정의된 크기로 잘리고, 사용자가 scrollRect
객체의 x
및 y
속성을 변경할 때 해당 사각형 내에서 스크롤합니다.
scrollRect
Rectangle 객체의 속성은 표시 객체의 좌표 공간을 사용하며 전체 표시 객체처럼 크기가 조절됩니다. 스크롤하는 표시 객체에서 잘려진 창의 모서리 경계는 표시 객체의 원점(0,0) 및 사각형의 폭과 높이에 의해 정의된 점입니다. 이러한 점은 원점 근처인 가운데에 배치되지 않습니다. 영역의 왼쪽 위 모서리를 원점을 사용하여 정의합니다. 스크롤된 표시 객체는 항상 전체 픽셀 증분 내에서 스크롤됩니다.
scrollRect
Rectangle 객체의 x
속성을 설정하여 객체를 좌우로 스크롤할 수 있습니다. scrollRect
Rectangle 객체의 y
속성을 설정하여 객체를 상하로 스크롤할 수 있습니다. 표시 객체를 90° 회전하고 좌우로 스크롤하면 실제로는 해당 표시 객체가 상하로 스크롤된 것입니다.
scrollRect
속성에 대한 변경 사항은 객체가 렌더링될 경우에만 처리됩니다. 따라서 localToGlobal
과 같은 메서드는 scrollRect
를 수정한 직후에 호출할 경우 예상과 다른 결과를 가져올 수 있습니다.
참고: Flash Player 11.4/AIR 3.4부터는 사각형의 폭 또는 너비 값이 음수인 경우 0으로 변경됩니다.
구현
public function get scrollRect():Rectangle
public function set scrollRect(value:Rectangle):void
관련 API 요소
예제 ( 예제 사용 방법 )
scrollRect
속성이 표시 객체 circle
의 스크롤 영역을 정의하는 방법을 보여 줍니다. circle
객체를 클릭하면 clicked()
이벤트 핸들러 메서드가 circle
객체에 대한 scrollRect
속성의 y
속성을 정의하여 객체를 아래로 스크롤합니다.
import flash.display.Sprite; import flash.geom.Rectangle; import flash.events.MouseEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFFCC00); circle.graphics.drawCircle(200, 200, 200); circle.scrollRect = new Rectangle(0, 0, 200, 200); addChild(circle); circle.addEventListener(MouseEvent.CLICK, clicked); function clicked(event:MouseEvent):void { var rect:Rectangle = event.target.scrollRect; rect.y -= 5; event.target.scrollRect = rect; }
stage | 속성 |
stage:Stage
[읽기 전용] 언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체의 Stage입니다. Flash 런타임 응용 프로그램에는 Stage 객체가 한 개뿐입니다. 예를 들어 여러 표시 객체를 만들어 표시 목록에 로드하는 경우 각 표시 객체의 stage
속성은 동일한 Stage 객체를 나타내며, 로드된 SWF 파일에 속한 표시 목록의 경우에도 마찬가지입니다.
표시 객체가 표시 목록에 추가되지 않은 경우 해당 stage
속성은 null
로 설정됩니다.
구현
public function get stage():Stage
예제 ( 예제 사용 방법 )
width
속성을 사용하여 텍스트 필드를 배치합니다.
import flash.text.TextField; var tf1:TextField = new TextField(); tf1.text = "Text Field 1"; tf1.border = true; tf1.x = 10; addChild(tf1); tf1.width = tf1.stage.stageWidth / 2 - 10; var tf2:TextField = new TextField(); tf2.text = "Text Field 2"; tf2.border = true; tf2.x = tf1.x + tf1.width + 5; addChild(tf2); tf2.width = tf2.stage.stageWidth / 2 - 10; trace(stage.stageWidth);
transform | 속성 |
transform:flash.geom:Transform
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체의 행렬, 색상 변환 및 픽셀 경계와 관련된 속성을 가진 객체입니다. 특수 속성인 matrix, colorTransform 및 세 가지 읽기 전용 속성(concatenatedMatrix
, concatenatedColorTransform
및 pixelBounds
)은 Transform 클래스에 대한 항목에 설명되어 있습니다.
transform 객체의 각 속성들은 그 자체가 객체입니다. matrix 또는 colorTransform 객체에 새 값을 설정하는 방법은 새 객체를 만들고 해당 객체를 transform.matrix 또는 transform.colorTransform 속성에 복사하는 방법 한 가지뿐이므로 이 사항은 매우 중요합니다.
예를 들어 표시 객체 행렬의 tx
값을 늘리려면 전체 행렬 객체의 복사본을 만들고 새 객체를 변환 객체의 행렬 속성에 복사해야 합니다.
var myMatrix:Matrix = myDisplayObject.transform.matrix;
myMatrix.tx += 10;
myDisplayObject.transform.matrix = myMatrix;
tx
속성은 직접 설정할 수 없습니다. 다음 코드는 myDisplayObject
에 아무런 영향을 주지 않습니다.
myDisplayObject.transform.matrix.tx += 10;
또한 전체 변환 객체를 복사하여 이 객체를 다른 표시 객체의 변환 속성에 지정할 수도 있습니다. 예를 들어 다음 코드에서는 전체 변환 객체를 myOldDisplayObj
에서 myNewDisplayObj
로 복사합니다.
myNewDisplayObj.transform = myOldDisplayObj.transform;
이제 결과 표시 객체인 myNewDisplayObj
의 행렬, 색상 변환 및 픽셀 경계에 대한 값은 이전 표시 객체인 myOldDisplayObj
의 값과 같습니다.
AIR for TV 장치는 하드웨어 가속을 사용할 수 있는 경우 색상 변환에 하드웨어 가속을 자동으로 사용합니다.
구현
public function get transform():flash.geom:Transform
public function set transform(value:flash.geom:Transform):void
관련 API 요소
예제 ( 예제 사용 방법 )
square
Sprite 객체를 설정합니다. 사용자가 Sprite를 클릭하면 transformer()
메서드는 해당 Sprite에 대한 transform
속성의 colorTransform
및 matrix
속성을 조정합니다.
import flash.display.Sprite; import flash.geom.ColorTransform; import flash.geom.Matrix; import flash.geom.Transform; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.lineStyle(20, 0xFF2200); square.graphics.beginFill(0x0000DD); square.graphics.drawRect(0, 0, 100, 100); addChild(square); var resultColorTransform:ColorTransform = new ColorTransform(); resultColorTransform.alphaMultiplier = 0.5; resultColorTransform.redOffset = 155; resultColorTransform.greenMultiplier = 0.5; var skewMatrix:Matrix = new Matrix(1, 1, 0, 1); square.addEventListener(MouseEvent.CLICK, transformer); function transformer(event:MouseEvent):void { var transformation:Transform = square.transform; var tempMatrix:Matrix = square.transform.matrix; tempMatrix.concat(skewMatrix); square.transform.colorTransform = resultColorTransform; square.transform.matrix = tempMatrix; }
visible | 속성 |
visible:Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체가 표시되는지 여부를 나타냅니다. 표시되지 않는 표시 객체는 비활성화됩니다. 예를 들어 InteractiveObject 인스턴스에 대해 visible=false
이면 이를 클릭할 수 없습니다.
구현
public function get visible():Boolean
public function set visible(value:Boolean):void
예제 ( 예제 사용 방법 )
visible
속성을 주기적으로 변경하는 함수를 호출함으로써 깜박이는 효과를 냅니다.
import flash.text.TextField; import flash.utils.Timer; import flash.events.TimerEvent; var tf:TextField = new TextField(); tf.text = "Hello."; addChild(tf); var tim:Timer = new Timer(250); tim.start(); tim.addEventListener(TimerEvent.TIMER, blinker); function blinker(event:TimerEvent):void { tf.visible = !tf.visible; }
width | 속성 |
width:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체의 폭을 픽셀 단위로 나타냅니다. 폭은 표시 객체 내용의 경계에 따라 계산됩니다. 다음 코드와 같이 width
속성을 설정하면 그에 따라 scaleX
속성이 조절됩니다.
var rect:Shape = new Shape(); rect.graphics.beginFill(0xFF0000); rect.graphics.drawRect(0, 0, 100, 100); trace(rect.scaleX) // 1; rect.width = 200; trace(rect.scaleX) // 2;
TextField 및 Video 객체를 제외하고 빈 스프라이트처럼 내용이 없는 표시 객체는 width
를 다른 값으로 설정하려고 해도 폭이 0입니다.
구현
public function get width():Number
public function set width(value:Number):void
예제 ( 예제 사용 방법 )
square
Sprite 객체를 설정합니다. 사용자가 Sprite 객체를 클릭하면 widen()
메서드가 Sprite의 width
속성을 증가시킵니다.
import flash.display.Sprite; import flash.events.MouseEvent; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFF0000); square.graphics.drawRect(0, 0, 100, 100); addChild(square); square.addEventListener(MouseEvent.CLICK, widen); function widen(event:MouseEvent):void { square.width += 10; }
x | 속성 |
x:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
부모 DisplayObjectContainer의 로컬 좌표를 기준으로 DisplayObject 인스턴스의 x 좌표를 나타냅니다. 변형이 있는 DisplayObjectContainer 내부의 객체는 해당하는 DisplayObjectContainer의 로컬 좌표계에 속합니다. 그러므로 DisplayObjectContainer를 시계 반대 방향으로 90° 회전시킬 경우, DisplayObjectContainer의 자식은 시계 반대 방향으로 90° 회전된 좌표계를 상속받게 됩니다. 객체의 좌표계는 등록 포인트의 위치를 가리킵니다.
구현
public function get x():Number
public function set x(value:Number):void
예제 ( 예제 사용 방법 )
circle
Sprite 객체를 설정합니다. Timer 객체를 사용하여 Sprite의 x
속성을 50밀리초 간격으로 변경합니다.
import flash.display.Sprite; import flash.utils.Timer; import flash.events.TimerEvent; var circle:Sprite = new Sprite(); circle.graphics.beginFill(0xFF0000); circle.graphics.drawCircle(100, 100, 100); addChild(circle); var tim:Timer = new Timer(50); tim.start(); tim.addEventListener(TimerEvent.TIMER, bounce); var xInc:Number = 2; function bounce(event:TimerEvent):void { circle.x += xInc; if (circle.x > circle.width) { xInc = -2; } if (circle.x < 0) { xInc = 2; } }
y | 속성 |
y:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
부모 DisplayObjectContainer의 로컬 좌표를 기준으로 DisplayObject 인스턴스의 y 좌표를 나타냅니다. 변형이 있는 DisplayObjectContainer 내부의 객체는 해당하는 DisplayObjectContainer의 로컬 좌표계에 속합니다. 그러므로 DisplayObjectContainer를 시계 반대 방향으로 90° 회전시킬 경우, DisplayObjectContainer의 자식은 시계 반대 방향으로 90° 회전된 좌표계를 상속받게 됩니다. 객체의 좌표계는 등록 포인트의 위치를 가리킵니다.
구현
public function get y():Number
public function set y(value:Number):void
예제 ( 예제 사용 방법 )
textHeight
속성을 기준으로 height
속성을 조정합니다. 또한 y
속성도 설정하여 두 번째 텍스트 필드를 배치합니다.
import flash.text.TextField; var tf1:TextField = new TextField(); tf1.text = "Text Field 1"; tf1.border = true; tf1.wordWrap = true; tf1.width = 40; tf1.height = tf1.textHeight + 5; addChild(tf1); var tf2:TextField = new TextField(); tf2.text = "Text Field 2"; tf2.border = true; tf2.wordWrap = true; tf2.width = 40; tf2.height = tf2.textHeight + 5; tf2.y = tf1.y + tf1.height + 5; addChild(tf2);
z | 속성 |
z:Number
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5 |
3D parent 컨테이너를 기준으로 DisplayObject 인스턴스의 z축에 있는 z 좌표 위치를 나타냅니다. z 속성은 화면 또는 픽셀 좌표가 아닌 3D 좌표에 사용됩니다.
표시 객체의 z
속성을 기본값인 0
이외의 값으로 설정하면 해당 Matrix3D 객체가 자동으로 만들어집니다. 3차원에서 표시 객체의 위치와 방향을 조정합니다. z축 작업을 수행할 때는 x 및 y 속성의 기존 비헤이비어가 화면 또는 픽셀 좌표에서 3D parent 컨테이너를 기준으로 하는 위치로 변경됩니다.
예를 들어 x = 100, y = 100, z = 200 위치에 있는 _root
의 자식은 픽셀 위치 (100,100)에 그려지지 않습니다. 해당 자식은 3D 프로젝션 계산의 결과 위치에 그려집니다. 계산은 다음과 같습니다.
(x*cameraFocalLength/cameraRelativeZPosition, y*cameraFocalLength/cameraRelativeZPosition)
구현
public function get z():Number
public function set z(value:Number):void
관련 API 요소
예제 ( 예제 사용 방법 )
z
축에서 위아래로) 움직입니다. 타원 하나는 다른 하나보다 빠르게 이동하도록 설정됩니다.
package { import flash.display.MovieClip; import flash.display.Shape; import flash.display.Graphics; import flash.events.Event; import flash.geom.*; public class ZAxisExample1 extends MovieClip { private var ellipse1Back:int = 1; private var ellipse2Back:int = 1; private var depth:int = 1000; public function ZAxisExample1():void { var ellipse1 = drawEllipse((this.stage.stageWidth / 2) - 100, (this.stage.stageHeight / 2), 100, 80, 10); var ellipse2 = drawEllipse((this.stage.stageWidth / 2) + 100, (this.stage.stageHeight / 2), 100, 80, 300); this.addChild(ellipse1); this.addChild(ellipse2); ellipse1.addEventListener(Event.ENTER_FRAME, ellipse1FrameHandler); ellipse2.addEventListener(Event.ENTER_FRAME, ellipse2FrameHandler); } private function drawEllipse(x:Number, y:Number, w:Number, h:Number, z:Number):Shape { var s:Shape = new Shape(); s.z = z; s.graphics.beginFill(0xFF0000); s.graphics.lineStyle(2); s.graphics.drawEllipse(x, y, w, h); s.graphics.endFill(); return s; } private function ellipse1FrameHandler(e:Event):void { ellipse1Back = setDepth(e, ellipse1Back); e.currentTarget.z += ellipse1Back * 10; } private function ellipse2FrameHandler(e:Event):void { ellipse2Back = setDepth(e, ellipse2Back); e.currentTarget.z += ellipse2Back * 20; } private function setDepth(e:Event, d:int):int { if(e.currentTarget.z > depth) { e.currentTarget.z = depth; d = -1; }else if (e.currentTarget.z < 0) { e.currentTarget.z = 0; d = 1; } return d; } } }
getBounds | () | 메서드 |
public function getBounds(targetCoordinateSpace:DisplayObject):Rectangle
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
targetCoordinateSpace
객체의 좌표계를 기준으로 표시 객체의 영역을 정의하는 사각형을 반환합니다. 다음 코드는 메서드에 전달한 targetCoordinateSpace
매개 변수에 따라 반환된 사각형이 달라지는 결과를 보여 줍니다.
var container:Sprite = new Sprite(); container.x = 100; container.y = 100; this.addChild(container); var contents:Shape = new Shape(); contents.graphics.drawCircle(0,0,100); container.addChild(contents); trace(contents.getBounds(container)); // (x=-100, y=-100, w=200, h=200) trace(contents.getBounds(this)); // (x=0, y=0, w=200, h=200)
참고: localToGlobal()
및 globalToLocal()
메서드를 사용하면 표시 객체의 로컬 좌표를 표시 좌표로, 또는 표시 좌표를 로컬 좌표로 각각 변환할 수 있습니다.
getBounds()
메서드는 getRect()
메서드와 유사하지만, getBounds()
메서드가 반환한 사각형에는 모양에 획이 있고 getRect()
메서드가 반환한 사각형에는 획이 없다는 점이 다릅니다. 이에 대한 예제는 getRect()
메서드 설명 부분을 참조하십시오.
매개 변수
targetCoordinateSpace:DisplayObject — 사용할 좌표계를 정의하는 표시 객체입니다.
|
Rectangle — targetCoordinateSpace 객체의 좌표계를 기준으로 표시 객체 영역을 정의하는 사각형입니다.
|
관련 API 요소
getRect | () | 메서드 |
public function getRect(targetCoordinateSpace:DisplayObject):Rectangle
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
targetCoordinateSpace
매개 변수에 의해 정의되는 좌표계를 기준으로 모양의 획을 제외하고 표시 객체의 경계를 정의하는 사각형을 반환합니다. getRect()
메서드에서 반환된 값은 getBounds()
메서드에서 반환된 값보다 작거나 같습니다.
참고: localToGlobal()
및 globalToLocal()
메서드를 사용하면 표시 객체의 로컬 좌표를 Stage 좌표로, 또는 Stage 좌표를 로컬 좌표로 각각 변환할 수 있습니다.
매개 변수
targetCoordinateSpace:DisplayObject — 사용할 좌표계를 정의하는 표시 객체입니다.
|
Rectangle — targetCoordinateSpace 객체의 좌표계를 기준으로 표시 객체 영역을 정의하는 사각형입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
getBounds()
메서드가 getRect()
메서드보다 더 큰 사각형을 반환하는 결과를 보여 줍니다. 이 경우 triangle
스프라이트에는 lineStyle()
메서드의 width
및 jointStyle
매개 변수로 인해 추가 획이 포함됩니다. trace()
출력(마지막 두 줄)에 getRect()
사각형과 getBounds()
사각형의 차이가 표시됩니다.
import flash.display.CapsStyle; import flash.display.JointStyle; import flash.display.LineScaleMode; import flash.display.Sprite; import flash.geom.Rectangle; var triangle:Sprite = new Sprite(); var color:uint = 0xFF0044; var width:Number = 20; var alpha:Number = 1.0; var pixelHinting:Boolean = true; var scaleMode:String = LineScaleMode.NORMAL; var caps:String = CapsStyle.SQUARE; var joints:String = JointStyle.MITER; triangle.graphics.lineStyle(width, color, alpha, pixelHinting, scaleMode, caps, joints); var triangleSide:Number = 100; triangle.graphics.moveTo(0, 0); triangle.graphics.lineTo(0, triangleSide); triangle.graphics.lineTo(triangleSide, triangleSide); triangle.graphics.lineTo(0, 0); addChild(triangle); trace(triangle.getBounds(this)); // (x=-10, y=-24.1, w=134.10000000000002, h=134.1) trace(triangle.getRect(this)); // (x=0, y=0, w=100, h=100)
globalToLocal | () | 메서드 |
public function globalToLocal(point:Point):Point
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
point
객체를 Stage 전역 좌표에서 표시 객체의 로컬 좌표로 변환합니다.
이 메서드를 사용하려면 먼저 Point 클래스의 인스턴스를 만듭니다. 지정하는 x 및 y 값은 기본 표시 영역의 원점(0,0)을 기준으로 하기 때문에 전역 좌표를 나타냅니다. 그런 다음 Point 인스턴스를 globalToLocal()
메서드에 매개 변수로 전달합니다. 이 메서드는 표시 객체의 원점이 아니라 Stage의 원점을 기준으로 x 및 y 값을 갖는 새 Point 객체를 반환합니다.
매개 변수
point:Point — Point 클래스를 사용하여 만든 객체입니다. Point 객체는 x 및 y 좌표를 속성으로 지정합니다.
|
Point — 표시 객체 기준의 좌표를 갖는 Point 객체입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
hitTestPoint()
메서드를 호출한 결과를 보여 줍니다. globalToLocal()
메서드는 Stage 좌표의 점을 해당 모양의 좌표 공간으로 변환합니다.
import flash.display.Shape; import flash.geom.Point; var circle:Shape = new Shape(); circle.graphics.beginFill(0x0000FF); circle.graphics.drawCircle(40, 40, 40); circle.x = 10; addChild(circle); var point1:Point = new Point(0, 0); trace(circle.hitTestPoint(point1.x, point1.y, true)); // false trace(circle.hitTestPoint(point1.x, point1.y, false)); // false trace(circle.globalToLocal(point1)); // [x=-10, y=0] var point2:Point = new Point(10, 1); trace(circle.hitTestPoint(point2.x, point2.y, true)); // false trace(circle.hitTestPoint(point2.x, point2.y, false)); // true trace(circle.globalToLocal(point2)); // [x=0, y=1] var point3:Point = new Point(30, 20); trace(circle.hitTestPoint(point3.x, point3.y, true)); // true trace(circle.hitTestPoint(point3.x, point3.y, false)); // true trace(circle.globalToLocal(point3)); // [x=20, y=20]
globalToLocal3D | () | 메서드 |
public function globalToLocal3D(point:Point):Vector3D
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
Stage(전역) 좌표의 2차원 점을 3차원 표시 객체(로컬) 좌표로 변환합니다.
이 메서드를 사용하려면 먼저 Point 클래스의 인스턴스를 만듭니다. Point 객체에 할당하는 x 및 y 값은 기본 표시 영역의 원점(0,0)을 기준으로 하므로 전역 좌표를 나타냅니다. 그런 다음 Point 객체를 globalToLocal3D()
메서드에 point
매개 변수로 전달합니다. 이 메서드는 3차원 표시 객체의 원점을 기준으로 하는 x
, y
및 z
값이 들어 있는 Vector3D 객체로 3차원 좌표를 반환합니다.
매개 변수
point:Point — 전역 x 및 y 좌표를 나타내는 2차원 Point 객체입니다.
|
Vector3D — 3차원 표시 객체를 기준으로 하는 좌표를 갖는 Vector3D 객체입니다.
|
hitTestObject | () | 메서드 |
public function hitTestObject(obj:DisplayObject):Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체의 경계 상자를 평가하여 obj
표시 객체의 경계 상자와 겹치거나 교차하는지 확인합니다.
매개 변수
obj:DisplayObject — 테스트할 표시 객체입니다.
|
Boolean — 표시 객체의 경계 상자가 교차하면 true 이고, 그렇지 않으면 false 입니다.
|
예제 ( 예제 사용 방법 )
hitTestObject()
메서드를 호출한 결과를 보여 줍니다. circle2와 circle3은 겹쳐 있지 않더라도 그 경계 상자는 겹칩니다. 따라서 circle2와 circle3의 히트 테스트는 true
를 반환합니다.
import flash.display.Shape; var circle1:Shape = new Shape(); circle1.graphics.beginFill(0x0000FF); circle1.graphics.drawCircle(40, 40, 40); addChild(circle1); var circle2:Shape = new Shape(); circle2.graphics.beginFill(0x00FF00); circle2.graphics.drawCircle(40, 40, 40); circle2.x = 50; addChild(circle2); var circle3:Shape = new Shape(); circle3.graphics.beginFill(0xFF0000); circle3.graphics.drawCircle(40, 40, 40); circle3.x = 100; circle3.y = 67; addChild(circle3); trace(circle1.hitTestObject(circle2)); // true trace(circle1.hitTestObject(circle3)); // false trace(circle2.hitTestObject(circle3)); // true
hitTestPoint | () | 메서드 |
public function hitTestPoint(x:Number, y:Number, shapeFlag:Boolean = false):Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체를 평가하여 x
및 y
매개 변수에 의해 지정된 점과 겹치거나 교차하는지 확인합니다. x
및 y
매개 변수는 표시 객체 컨테이너가 Stage가 아닌 한 표시 객체를 포함하는 표시 객체 컨테이너가 아닌 Stage의 좌표 공간에 점을 지정합니다.
매개 변수
x:Number — 이 객체에 대해 테스트할 x 좌표입니다.
| |
y:Number — 이 객체에 대해 테스트할 y 좌표입니다.
| |
shapeFlag:Boolean (default = false ) — 객체(true )의 실제 픽셀을 검사할 것인지 아니면 경계 상자(false )를 검사할 것인지를 나타냅니다.
|
Boolean — 표시 객체가 지정된 점과 겹치거나 교차하면 true 이고, 그렇지 않으면 false 입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
hitTestPoint()
메서드를 호출한 결과를 보여 줍니다. globalToLocal()
메서드는 Stage 좌표의 점을 해당 모양의 좌표 공간으로 변환합니다.
import flash.display.Shape; import flash.geom.Point; var circle:Shape = new Shape(); circle.graphics.beginFill(0x0000FF); circle.graphics.drawCircle(40, 40, 40); circle.x = 10; addChild(circle); var point1:Point = new Point(0, 0); trace(circle.hitTestPoint(point1.x, point1.y, true)); // false trace(circle.hitTestPoint(point1.x, point1.y, false)); // false trace(circle.globalToLocal(point1)); // [x=-10, y=0] var point2:Point = new Point(10, 1); trace(circle.hitTestPoint(point2.x, point2.y, true)); // false trace(circle.hitTestPoint(point2.x, point2.y, false)); // true trace(circle.globalToLocal(point2)); // [x=0, y=1] var point3:Point = new Point(30, 20); trace(circle.hitTestPoint(point3.x, point3.y, true)); // true trace(circle.hitTestPoint(point3.x, point3.y, false)); // true trace(circle.globalToLocal(point3)); // [x=20, y=20]
local3DToGlobal | () | 메서드 |
public function local3DToGlobal(point3d:Vector3D):Point
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 1.5, Flash Lite 4 |
3차원 표시 객체의 로컬 좌표에 있는 3차원 점을 Stage 전역 좌표의 2차원 점으로 변환합니다.
예를 들어 display.Graphics
메서드를 사용하여 그릴 때는 2차원 좌표 (x,y)만 사용할 수 있습니다. 3차원 객체를 그리려면 표시 객체의 3차원 좌표를 2차원 좌표로 매핑해야 합니다. 우선 3차원 표시 객체의 x, y 및 z 좌표가 들어 있는 Vector3D 클래스의 인스턴스를 만듭니다. 그런 다음 Vector3D 객체를 local3DToGlobal()
메서드에 point3d
매개 변수로 전달합니다. 이 메서드는 그래픽 API를 사용하여 3차원 객체를 그리는 데 사용할 수 있는 2차원 Point 객체를 반환합니다.
매개 변수
point3d:Vector3D — 3차원 점 또는 3차원 표시 객체의 좌표가 들어 있는 Vector3D 객체입니다.
|
Point — 3차원 점을 2차원 공간에서 나타내는 2차원 점입니다.
|
예제 ( 예제 사용 방법 )
display.Graphics
메서드를 사용하여 2차원 공간에 간단한 3차원 정육면체를 그립니다. this
표시 객체의 위치는 오프셋이므로 정육면체의 등록 포인트는 중심에 있습니다. Vector3D 객체의 벡터에는 정육면체의 3차원 좌표가 들어 있습니다. 정육면체의 윗면을 먼저 그린 다음 아랫면을 그리고 윗면과 아랫면의 모서리 네 개를 연결합니다. 정육면체를 그리기 전에 표시 객체 컨테이너에 정육면체를 추가해야 local3DToGlobal()
메서드를 사용할 수 있습니다.
package { import flash.display.MovieClip; import flash.display.Sprite; import flash.display.Graphics; import flash.geom.*; public class Local3DToGlobalExample extends MovieClip { private var myCube:Sprite = new Sprite(); private var v8:Vector.<Vector3D> = new Vector.<Vector3D>(8); public function Local3DToGlobalExample():void { this.x = -(this.stage.stageWidth / 2); this.y = -(this.stage.stageWidth / 2); v8[0] = new Vector3D(-40,-40,-40); v8[1] = new Vector3D(40,-40,-40); v8[2] = new Vector3D(40,-40,40); v8[3] = new Vector3D(-40,-40,40); v8[4] = new Vector3D(-40,100,-40); v8[5] = new Vector3D(40,100,-40); v8[6] = new Vector3D(40,100,40); v8[7] = new Vector3D(-40,100,40); myCube.x = (this.stage.stageWidth / 2); myCube.y = (this.stage.stageWidth / 2); myCube.z = 1; addChild(myCube); Cube(); } private function Cube():void { var ps:Point = new Point(0,0); myCube.graphics.lineStyle(2,0xFF0000); ps = myCube.local3DToGlobal(v8[0]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[1]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[2]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[3]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[0]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[4]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[5]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[6]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[7]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[4]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[0]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[4]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[1]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[5]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[2]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[6]); myCube.graphics.lineTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[3]); myCube.graphics.moveTo(ps.x, ps.y); ps = myCube.local3DToGlobal(v8[7]); myCube.graphics.lineTo(ps.x, ps.y); } } }
localToGlobal | () | 메서드 |
public function localToGlobal(point:Point):Point
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
point
객체를 표시 객체의 로컬 좌표에서 Stage 전역 좌표로 변환합니다.
이 메서드를 사용하면 지정된 x 및 y 좌표를 특정 표시 객체의 원점(0,0)을 기준으로 하는 값(로컬 좌표)에서 Stage 원점을 기준으로 하는 값(전역 좌표)으로 변환할 수 있습니다.
이 메서드를 사용하려면 먼저 Point 클래스의 인스턴스를 만듭니다. 지정하는 x 및 y 값은 표시 객체의 원점을 기준으로 하기 때문에 로컬 좌표를 나타냅니다.
그런 다음, 만들어진 Point 인스턴스를 localToGlobal()
메서드에 매개 변수로 전달합니다. 이 메서드는 표시 객체의 원점이 아니라 Stage 원점을 기준으로 x 및 y 값을 갖는 새 Point 객체를 반환합니다.
매개 변수
point:Point — Point 클래스를 사용하여 만든 점의 이름 또는 식별자로, x 및 y 좌표를 속성으로 지정합니다.
|
Point — Stage 기준의 좌표를 갖는 Point 객체입니다.
|
관련 API 요소
예제 ( 예제 사용 방법 )
mouseX
및 mouseY
속성은 표시 객체의 좌표 공간에 있습니다. 이 코드에서는 localToGlobal()
메서드를 사용하여 이러한 속성을 Stage 전역 좌표로 변환합니다.
import flash.display.Sprite; import flash.events.MouseEvent; import flash.geom.Point; var square:Sprite = new Sprite(); square.graphics.beginFill(0xFFCC00); square.graphics.drawRect(0, 0, 100, 100); square.x = 100; square.y = 200; addChild(square); square.addEventListener(MouseEvent.CLICK, traceCoordinates) function traceCoordinates(event:MouseEvent):void { var clickPoint:Point = new Point(square.mouseX, square.mouseY); trace("display object coordinates:", clickPoint); trace("stage coordinates:", square.localToGlobal(clickPoint)); }
added | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.ADDED
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체를 표시 목록에 추가할 때 전달됩니다. DisplayObjectContainer.addChild()
및 DisplayObjectContainer.addChildAt()
메서드가 이 이벤트를 트리거합니다.
Event.ADDED
상수는 added
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | true |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 표시 목록에 추가할 DisplayObject 인스턴스입니다. target 은 표시 목록에서 이벤트 리스너를 등록한 객체가 아닐 수도 있습니다. 표시 목록에서 현재 이벤트를 처리 중인 객체에 액세스하려면 currentTarget 속성을 사용합니다. |
관련 API 요소
addedToStage | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.ADDED_TO_STAGE
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9.0.28.0, Flash Lite 4 |
표시 객체를 직접 또는 해당 표시 객체가 포함된 하위 트리 추가를 통해 스테이지 표시 목록에 추가할 때 전달됩니다. DisplayObjectContainer.addChild()
및 DisplayObjectContainer.addChildAt()
메서드가 이 이벤트를 트리거합니다.
Event.ADDED_TO_STAGE
상수는 addedToStage
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | DisplayObject 인스턴스가 포함된 하위 트리 추가를 통해 또는 직접 스테이지 표시 목록에 추가되는 DisplayObject 인스턴스입니다. DisplayObject 인스턴스가 직접 추가되는 경우에는 이 이벤트 전에 added 이벤트가 발생합니다. |
관련 API 요소
enterFrame | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.ENTER_FRAME
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[브로드캐스트 이벤트] 재생 헤드가 새 프레임에 들어갈 때 전달됩니다. 재생 헤드가 이동하지 않거나 프레임이 하나만 있을 경우 이 이벤트는 프레임 속도와 연동하여 계속해서 전달됩니다. 이 이벤트는 브로드캐스트 이벤트입니다. 즉, 이 이벤트에 등록된 리스너가 있는 모든 표시 객체에서 전달합니다.
Event.ENTER_FRAME
상수는 enterFrame
이벤트 객체의 type
속성 값을 정의합니다.
참고: 이 이벤트에는 "캡처 단계" 또는 "버블링 단계"가 없으므로 대상이 표시 목록에 있는지 여부에 관계없이 잠재적인 모든 대상에 이벤트 리스너를 직접 추가해야 합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | enterFrame 이벤트에 대한 리스너가 등록되어 있는 모든 DisplayObject 인스턴스입니다. |
exitFrame | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.EXIT_FRAME
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 2, Flash Lite 4 |
[브로드캐스트 이벤트] 재생 헤드가 현재 프레임을 종료할 때 전달됩니다. 모든 프레임 스크립트가 실행되었습니다. 재생 헤드가 이동하지 않거나 프레임이 하나만 있을 경우 이 이벤트는 프레임 속도와 연동하여 계속해서 전달됩니다. 이 이벤트는 브로드캐스트 이벤트입니다. 즉, 이 이벤트에 등록된 리스너가 있는 모든 표시 객체에서 전달합니다.
Event.EXIT_FRAME
상수는 exitFrame
이벤트 객체의 type
속성 값을 정의합니다.
참고: 이 이벤트에는 "캡처 단계" 또는 "버블링 단계"가 없으므로 대상이 표시 목록에 있는지 여부에 관계없이 잠재적인 모든 대상에 이벤트 리스너를 직접 추가해야 합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | enterFrame 이벤트에 대한 리스너가 등록되어 있는 모든 DisplayObject 인스턴스입니다. |
frameConstructed | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.FRAME_CONSTRUCTED
언어 버전: | ActionScript 3.0 |
런타임 버전: | Flash Player 10, AIR 2, Flash Lite 4 |
[브로드캐스트 이벤트] 프레임 표시 객체의 생성자가 실행되었지만 프레임 스크립트는 아직 실행되지 않았을 때 전달됩니다. 재생 헤드가 이동하지 않거나 프레임이 하나만 있을 경우 이 이벤트는 프레임 속도와 연동하여 계속해서 전달됩니다. 이 이벤트는 브로드캐스트 이벤트입니다. 즉, 이 이벤트에 등록된 리스너가 있는 모든 표시 객체에서 전달합니다.
Event.FRAME_CONSTRUCTED
상수는 frameConstructed
이벤트 객체의 type
속성 값을 정의합니다.
참고: 이 이벤트에는 "캡처 단계" 또는 "버블링 단계"가 없으므로 대상이 표시 목록에 있는지 여부에 관계없이 잠재적인 모든 대상에 이벤트 리스너를 직접 추가해야 합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | frameConstructed 이벤트에 대한 리스너가 등록되어 있는 모든 DisplayObject 인스턴스입니다. |
removed | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.REMOVED
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
표시 객체를 표시 목록에서 제거하려고 할 때 전달됩니다. DisplayObjectContainer 클래스의 removeChild()
및 removeChildAt()
메서드가 이 이벤트를 생성합니다.
새 객체를 위한 공간을 확보하기 위해 특정 객체를 제거해야 하는 경우 DisplayObjectContainer 객체의 addChild()
, addChildAt()
및 setChildIndex()
메서드도 이 이벤트를 생성합니다.
Event.REMOVED
상수는 removed
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | true |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | 표시 목록에서 제거할 DisplayObject 인스턴스입니다. target 은 표시 목록에서 이벤트 리스너를 등록한 객체가 아닐 수도 있습니다. 표시 목록에서 현재 이벤트를 처리 중인 객체에 액세스하려면 currentTarget 속성을 사용합니다. |
removedFromStage | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.REMOVED_FROM_STAGE
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9.0.28.0, Flash Lite 4 |
표시 객체를 직접 또는 해당 표시 객체가 포함된 하위 트리 제거를 통해 표시 목록에서 제거하려고 할 때 전달됩니다. DisplayObjectContainer 클래스의 removeChild()
및 removeChildAt()
메서드가 이 이벤트를 생성합니다.
새 객체를 위한 공간을 확보하기 위해 특정 객체를 제거해야 하는 경우 DisplayObjectContainer 객체의 addChild()
, addChildAt()
및 setChildIndex()
메서드도 이 이벤트를 생성합니다.
Event.REMOVED_FROM_STAGE
상수는 removedFromStage
이벤트 객체의 type
속성 값을 정의합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | DisplayObject 인스턴스가 포함된 하위 트리의 제거를 통해 또는 직접 스테이지 표시 목록에서 제거되는 DisplayObject 인스턴스입니다. DisplayObject 인스턴스가 직접 추가되는 경우에는 이 이벤트 전에 removed 이벤트가 발생합니다. |
render | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.RENDER
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[브로드캐스트 이벤트] 표시 목록이 업데이트 및 렌더링되기 직전에 전달됩니다. 이 이벤트는 표시 목록이 렌더링되기 전에 이 이벤트를 수신하는 객체가 변경을 수행할 수 있는 마지막 기회를 제공합니다. render
이벤트를 전달할 때마다 Stage 객체의 invalidate()
메서드를 호출해야 합니다. Render
이벤트는 Stage.invalidate()
를 호출한 객체와 상호 신뢰가 설정된 객체로만 전달됩니다. 이 이벤트는 브로드캐스트 이벤트입니다. 즉, 이 이벤트에 등록된 리스너가 있는 모든 표시 객체에서 전달합니다.
참고: 표시가 렌더링되지 않는 경우에 이 이벤트는 전달되지 않습니다. 내용이 최소화되어 있거나 가려져 있으면 렌더링되지 않습니다.
Event.RENDER
상수는 render
이벤트 객체의 type
속성 값을 정의합니다.
참고: 이 이벤트에는 "캡처 단계" 또는 "버블링 단계"가 없으므로 대상이 표시 목록에 있는지 여부에 관계없이 잠재적인 모든 대상에 이벤트 리스너를 직접 추가해야 합니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false : 기본 비헤이비어를 취소할 수 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | render 이벤트에 대한 리스너가 등록되어 있는 모든 DisplayObject 인스턴스입니다. |
DisplayObjectExample
클래스를 사용하여 Stage의 모서리에 주황색 사각형을 그린 후 각 이벤트에 대한 텍스트 정보를 표시함으로써 이벤트에 응답합니다. 이는 다음 단계로 이루어집니다.
- 사각형의 색상 및 크기에 대해 클래스 속성이 선언됩니다.
- 생성자가
draw()
메서드를 호출하여 Stage의 기본 좌표(x = 0, y = 0)에 주황색 사각형을 그립니다. - 다음과 같은 이벤트 리스너 메서드가 사각형에 연결됩니다.
addedHandler()
가added
이벤트를 수신합니다. 이 이벤트는 표시 목록에 사각형이 추가될 때 전달됩니다.enterFrameHandler()
가enterFrame
이벤트를 수신합니다. 이 이벤트는 이 예제에서는 실질적인 의미가 없습니다.removedHandler()
가removed
이벤트를 수신합니다. 이 이벤트는 사각형을 클릭하여 표시 목록에서 제거할 때 전달됩니다.clickHandler()
가click
이벤트를 수신합니다. 이 이벤트는 주황색 사각형을 클릭할 때 전달됩니다.- 표시 목록이 업데이트된 후
renderHandler()
가render
이벤트를 수신합니다.
package { import flash.display.Sprite; public class DisplayObjectExample extends Sprite { public function DisplayObjectExample() { var child:CustomDisplayObject = new CustomDisplayObject(); addChild(child); } } } import flash.display.DisplayObject; import flash.display.Sprite; import flash.display.Stage; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.*; class CustomDisplayObject extends Sprite { private var bgColor:uint = 0xFFCC00; private var size:uint = 80; public function CustomDisplayObject() { draw(); addEventListener(Event.ADDED, addedHandler); addEventListener(Event.ENTER_FRAME, enterFrameHandler); addEventListener(Event.REMOVED, removedHandler); addEventListener(MouseEvent.CLICK, clickHandler); addEventListener(Event.RENDER, renderHandler); } private function draw():void { graphics.beginFill(bgColor); graphics.drawRect(0, 0, size, size); graphics.endFill(); } private function clickHandler(event:MouseEvent):void { trace("clickHandler: " + event); parent.removeChild(this); } private function addedHandler(event:Event):void { trace("addedHandler: " + event); stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; stage.addEventListener("resize", resizeHandler); } private function enterFrameHandler(event:Event):void { trace("enterFrameHandler: " + event); removeEventListener("enterFrame", enterFrameHandler); } private function removedHandler(event:Event):void { trace("removedHandler: " + event); stage.removeEventListener("resize", resizeHandler); } private function renderHandler(event:Event):void { trace("renderHandler: " + event); } private function resizeHandler(event:Event):void { trace("resizeHandler: " + event); } }
Tue Jun 12 2018, 03:17 PM Z