언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이벤트 대상은 Flash® Player 및 Adobe® AIR® 이벤트 모델에서 중요한 부분입니다. 이벤트 대상은 표시 목록의 계층 구조를 통과하는 이벤트 흐름의 초점으로 사용됩니다. 마우스 클릭이나 키 누르기와 같은 이벤트가 발생하면 Flash Player 또는 AIR 응용 프로그램은 표시 목록의 루트에서 이벤트 흐름으로 이벤트 객체를 전달합니다. 그러면 이벤트 객체는 이벤트 대상에 도달할 때까지 표시 목록을 계속 진행해 나가다가 이벤트 대상에 도달하면 루트로 다시 되돌아갑니다. 이벤트 대상까지의 이 왕복 여정은 개념적으로 세 단계로 나누어집니다. 캡처 단계는 루트에서 이벤트 대상 노드 이전의 마지막 노드까지로 이루어지고, 대상 단계는 이벤트 대상 노드로만 구성되며, 버블링 단계는 표시 목록의 루트로 돌아가는 과정에서 만나게 되는 후속 노드로 구성됩니다.
일반적으로, 사용자 정의 클래스에 이벤트 전달 기능을 부여하는 가장 쉬운 방법은 EventDispatcher를 확장하는 것입니다. 이미 다른 클래스를 확장하여 이 클래스를 확장할 수 없는 경우에는 대신 IEventDispatcher 인터페이스를 구현하여 EventDispatcher 멤버를 만들고 간단한 연결을 작성하여 집계된 EventDispatcher로 호출을 라우팅하는 방법이 있습니다.
메서드 | 정의 주체 | ||
---|---|---|---|
EventDispatcher(target:IEventDispatcher = null)
EventDispatcher 클래스의 인스턴스를 집계합니다. | EventDispatcher | ||
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. | EventDispatcher | ||
이벤트를 이벤트 흐름으로 전달합니다. | EventDispatcher | ||
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher | ||
지정된 속성이 객체에 정의되어 있는지 여부를 나타냅니다. | Object | ||
Object 클래스의 인스턴스가 매개 변수로 지정된 객체의 프로토타입 체인에 있는지 여부를 나타냅니다. | Object | ||
지정된 속성이 존재하고 열거 가능한지 여부를 나타냅니다. | Object | ||
EventDispatcher 객체에서 리스너를 제거합니다. | EventDispatcher | ||
루프 작업에서 동적 속성을 사용할 수 있는지 여부를 설정합니다. | Object | ||
로캘별 규칙에 따라 서식이 지정된 이 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 문자열 표현을 반환합니다. | Object | ||
지정된 객체의 프리미티브 값을 반환합니다. | Object | ||
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. | EventDispatcher |
이벤트 | 요약 | 정의 주체 | ||
---|---|---|---|---|
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다. | EventDispatcher | |||
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다. | EventDispatcher |
EventDispatcher | () | 생성자 |
public function EventDispatcher(target:IEventDispatcher = null)
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
EventDispatcher 클래스의 인스턴스를 집계합니다.
EventDispatcher 클래스는 일반적으로 기본 클래스로 사용되므로 대부분의 개발자들은 이 생성자 함수를 사용할 필요가 없습니다. 그러나 IEventDispatcher 인터페이스를 구현하는 고급 개발자들은 이 생성자를 사용해야 합니다. EventDispatcher를 확장할 수 없어서 대신 IEventDispatcher 인터페이스를 구현해야 하는 경우에는 이 생성자를 사용하여 EventDispatcher 클래스의 인스턴스를 집계합니다.
매개 변수target:IEventDispatcher (default = null ) — EventDispatcher 객체에 전달된 이벤트의 대상 객체입니다. 이 매개 변수는 EventDispatcher 인스턴스가 IEventDispatcher 구현 클래스에 의해 집계될 때 사용되며, 포함 객체가 이벤트 대상이 될 수 있도록 하기 위해 필요합니다. 클래스가 EventDispatcher를 확장하는 간단한 작업에는 이 매개 변수를 사용하지 마십시오.
|
addEventListener | () | 메서드 |
public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
리스너에서 이벤트 알림을 받을 수 있도록 EventDispatcher 객체에 이벤트 리스너 객체를 등록합니다. 표시 목록의 모든 노드에서 특정 유형의 이벤트, 단계, 우선 순위에 대한 이벤트 리스너를 등록할 수 있습니다.
이벤트 리스너의 등록을 마친 뒤에는 addEventListener()
를 추가로 호출하여 그 우선 순위를 변경할 수 없습니다. 리스너의 우선 순위를 변경하려면 먼저 removeListener()
를 호출해야 합니다. 그런 다음 해당 리스너를 새로운 우선 순위 레벨로 다시 등록할 수 있습니다.
일단 리스너가 등록된 뒤에 type
또는 useCapture
값을 달리하여 addEventListener()
를 이어서 호출하면 별도의 리스너 등록이 생성된다는 것에 유의합니다. 예를 들어 useCapture
가 true
로 설정된 리스너를 등록하면 이 리스너는 캡처 단계 동안에만 수신합니다. 그러나 useCapture
를 false
로 설정하고 동일한 리스너 객체를 사용하여 addEventListener()
를 다시 호출하면 별도로 두 개의 리스너가 등록되어, 한 리스너는 캡처 단계 동안 수신하고 다른 하나는 대상 및 버블링 단계 동안 수신합니다.
대상 단계 또는 버블링 단계 전용의 이벤트 리스너를 등록할 수는 없습니다. 버블링은 대상 노드의 조상에만 적용되기 때문에 이들 단계는 등록 과정에서 하나로 통합됩니다.
사용하지 않는 이벤트 리스너는 removeEventListener()
를 호출하여 제거하도록 합니다. 이렇게 하지 않으면 메모리 문제가 발생할 수 있습니다. useWeakReference
매개 변수가 true
로 설정되지 않은 경우 전달하는 객체가 있는 한, 가비지 수집기는 이벤트 리스너를 제거하지 않으므로 리스너는 메모리에서 자동으로 제거되지 않습니다.
EventDispatcher 인스턴스를 복사해도 연결된 이벤트 리스너는 복사되지 않습니다. 새로 만든 노드에 이벤트 리스너가 필요한 경우, 노드를 만든 후 리스너를 연결해야 합니다. 그러나 EventDispatcher 인스턴스를 이동할 때에는 연결된 이벤트 리스너도 함께 이동됩니다.
이벤트를 처리 중인 노드에서 이벤트 리스너를 등록하는 경우, 그 이벤트 리스너는 현재 단계 동안에는 트리거되지 않지만 이벤트 흐름에서 이후 단계(예: 버블링 단계) 동안에는 트리거될 수 있습니다.
이벤트를 처리 중인 노드에서 이벤트 리스너를 제거하는 경우, 그 리스너는 현재 액션에 의해 트리거됩니다. 일단 제거된 이벤트 리스너는 이후의 처리를 위해 재등록하지 않는 한 다시는 호출되지 않습니다.
매개 변수
type:String — 이벤트 유형입니다.
| |
listener:Function — 이벤트를 처리하는 리스너 함수입니다. 아래 예제에서 보듯이, 이 함수는 Event 객체를 유일한 매개 변수로 사용하며 아무 것도 반환하지 않아야 합니다.
function(evt:Event):void 함수의 이름은 임의로 지정할 수 있습니다. | |
useCapture:Boolean (default = false ) —
리스너가 캡처 단계에서 작동하는지 아니면 대상 및 버블링 단계에서 작동하는지를 결정합니다. useCapture 가 true 로 설정된 경우, 리스너는 캡처 단계에서만 이벤트를 처리하고 대상 또는 버블링 단계에서는 작동하지 않습니다. useCapture 가 false 인 경우, 리스너는 대상 또는 버블링 단계 동안에만 이벤트를 처리합니다. 세 단계 모두에서 이벤트를 수신하려면 addEventListener 를 두 번 호출해야 합니다. 먼저 useCapture 를 true 로 설정하여 호출한 다음 useCapture 를 false 로 설정하여 다시 호출합니다.
| |
priority:int (default = 0 ) — 이벤트 리스너의 우선 순위 레벨입니다. 우선 순위는 부호 있는 32비트 정수로 지정됩니다. 숫자가 클수록 우선 순위가 높습니다. 우선 순위가 n인 리스너를 모두 처리한 뒤에 우선 순위가 n -1인 리스너가 처리됩니다. 둘 이상의 리스너가 우선 순위가 같을 경우, 추가된 순서에 따라 처리됩니다. 기본 우선 순위는 0입니다.
| |
useWeakReference:Boolean (default = false ) — 리스너에 대한 참조가 강한지 아니면 약한지를 결정합니다. 강한 참조(기본값)는 해당 리스너의 가비지 수집을 막습니다. 약한 참조는 이를 막지 못합니다. 클래스 레벨 멤버 함수는 가비지 수집의 영향을 받지 않으므로 가비지 수집과 상관없이 클래스 레벨 멤버 함수의 |
오류
ArgumentError — 지정된 listener 가 함수가 아닙니다.
|
dispatchEvent | () | 메서드 |
public function dispatchEvent(event:Event):Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이벤트를 이벤트 흐름으로 전달합니다. 이벤트 대상은 dispatchEvent()
메서드가 호출된 EventDispatcher 객체입니다.
매개 변수
event:Event — 이벤트 흐름으로 전달된 Event 객체입니다. 이벤트를 다시 전달하는 경우, 해당 이벤트의 복제본이 자동으로 만들어집니다. 이벤트가 전달된 뒤에는 이벤트의 target 속성을 변경할 수 없으므로, 재전달에 성공하려면 이벤트의 복사본을 새로 만들어야 합니다.
|
Boolean — 이벤트가 성공적으로 전달된 경우 값은 true 입니다. false 값은 실패를 나타내거나 해당 이벤트에서 preventDefault() 가 호출되었음을 나타냅니다.
|
오류
Error — 이벤트 전달 재귀 한계에 도달했습니다.
|
hasEventListener | () | 메서드 |
public function hasEventListener(type:String):Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
EventDispatcher 객체에 특정 유형의 이벤트에 대한 리스너가 등록되어 있는지 여부를 확인합니다. 이를 통해 이벤트 흐름 계층 구조의 어떤 지점에서 EventDispatcher 객체가 이벤트 유형 처리를 변경했는지 확인할 수 있습니다. 특정 이벤트 유형이 실제로 이벤트 리스너를 트리거하는지를 확인하려면 willTrigger()
를 사용합니다.
hasEventListener()
와 willTrigger()
간의 차이점은 hasEventListener()
가 자신이 속한 객체만 검사하는 반면 willTrigger()
는 type
매개 변수에 의해 지정된 이벤트의 전체 흐름을 검사한다는 점입니다.
LoaderInfo 객체로부터 hasEventListener()
가 호출된 경우에는 해당 호출자가 액세스할 수 있는 리스너만 고려의 대상이 됩니다.
매개 변수
type:String — 이벤트 유형입니다.
|
Boolean — 지정된 유형의 리스너가 등록되어 있으면 true 이고, 그렇지 않으면 false 입니다.
|
관련 API 요소
removeEventListener | () | 메서드 |
public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
EventDispatcher 객체에서 리스너를 제거합니다. EventDispatcher 객체와 함께 등록된 리스너 중 일치하는 것이 없다면 이 메서드를 호출해도 아무 영향이 없습니다.
매개 변수
type:String — 이벤트 유형입니다.
| |
listener:Function — 제거할 리스너 객체입니다.
| |
useCapture:Boolean (default = false ) —
리스너가 캡처 단계용으로 등록되었는지 아니면 대상 및 버블링 단계용으로 등록되었는지를 지정합니다. 리스너가 캡처 단계 및 대상/버블링 단계에 대해 모두 등록된 경우 두 리스너를 제거하려면 removeEventListener() 를 두 번 호출해야 합니다. 한 번은 useCapture() 를 true 로 설정하여 호출하고 한 번은 useCapture() 를 false 로 설정하여 호출합니다.
|
willTrigger | () | 메서드 |
public function willTrigger(type:String):Boolean
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
이 EventDispatcher 객체 또는 조상 객체에 지정한 이벤트 유형에 대한 이벤트 리스너가 등록되어 있는지 여부를 확인합니다. 지정된 유형의 이벤트가 이 EventDispatcher 객체나 그 자손으로 전달되었을 때 이벤트 흐름의 특정 단계에서 이벤트 리스너가 트리거되는 경우 이 메서드는 true
를 반환합니다.
hasEventListener()
메서드와 willTrigger()
메서드 간의 차이점은 hasEventListener()
가 자신이 속한 객체만 검사하는 반면 willTrigger()
메서드는 type
매개 변수에 의해 지정된 이벤트의 전체 이벤트 흐름을 검사한다는 점입니다.
LoaderInfo 객체로부터 willTrigger()
가 호출된 경우에는 해당 호출자가 액세스할 수 있는 리스너만 고려의 대상이 됩니다.
매개 변수
type:String — 이벤트 유형입니다.
|
Boolean — 지정된 유형의 리스너가 트리거될 경우에는 true 이고, 그렇지 않으면 false 입니다.
|
activate | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.ACTIVATE
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 얻어 활성화될 때 전달됩니다. 이 이벤트는 브로드캐스트 이벤트입니다. 즉, 이 이벤트에 등록된 리스너가 있는 모든 EventDispatcher 객체에서 전달합니다. 브로드캐스트 이벤트에 대한 자세한 내용은 DisplayObject 클래스를 참조하십시오.
ACTIVATE
상수는 activate
이벤트 객체의 type
속성 값을 정의합니다.
참고: 이 이벤트에는 "캡처 단계" 또는 "버블링 단계"가 없으므로 대상이 표시 목록에 있는지 여부에 관계없이 잠재적인 모든 대상에 이벤트 리스너를 직접 추가해야 합니다.
AIR for TV 장치는 이 이벤트를 자동으로 전달하지 않습니다. 하지만 수동으로 전달할 수는 있습니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | activate 이벤트에 대한 리스너가 등록되어 있는 모든 DisplayObject 인스턴스입니다. |
관련 API 요소
deactivate | 이벤트 |
flash.events.Event
속성 Event.type =
flash.events.Event.DEACTIVATE
언어 버전: | ActionScript 3.0 |
런타임 버전: | AIR 1.0, Flash Player 9, Flash Lite 4 |
[브로드캐스트 이벤트] Flash Player 또는 AIR 응용 프로그램이 운영 체제 포커스를 잃고 비활성화될 때 전달됩니다. 이 이벤트는 브로드캐스트 이벤트입니다. 즉, 이 이벤트에 등록된 리스너가 있는 모든 EventDispatcher 객체에서 전달합니다. 브로드캐스트 이벤트에 대한 자세한 내용은 DisplayObject 클래스를 참조하십시오.
Event.DEACTIVATE
상수는 deactivate
이벤트 객체의 type
속성 값을 정의합니다.
참고: 이 이벤트에는 "캡처 단계" 또는 "버블링 단계"가 없으므로 대상이 표시 목록에 있는지 여부에 관계없이 잠재적인 모든 대상에 이벤트 리스너를 직접 추가해야 합니다.
AIR for TV 장치는 이 이벤트를 자동으로 전달하지 않습니다. 하지만 수동으로 전달할 수는 있습니다.
이 이벤트에는 다음과 같은 속성이 있습니다.
속성 | 값 |
---|---|
bubbles | false |
cancelable | false . 취소할 기본 비헤이비어가 없습니다. |
currentTarget | 이벤트 리스너를 통해 Event 객체를 처리하고 있는 객체입니다. |
target | deactivate 이벤트에 대한 리스너가 등록되어 있는 모든 DisplayObject 인스턴스입니다. |
관련 API 요소
EventDispatcherExample
및 CustomDispatcher
클래스와 EventDispatcher
의 하위 클래스를 사용하여 사용자 정의 이벤트를 만들고 작성하는 방법을 보여 줍니다. 이는 다음 단계로 이루어집니다.
EventDispatcherExample
의 생성자는 로컬 변수dispatcher
를 생성하여 새로운 CustomDispatcher 인스턴스에 할당합니다.CustomDispatcher
내에서 이벤트에action
이라는 이름이 지정되고doAction()
메서드가 선언되도록 문자열을 설정합니다. 이 메서드는 호출 시action
이벤트를 만들고EventDispatcher.dispatchEvent()
를 사용하여 이를 전달합니다.- 그러면
dispatcher
속성을 통해action
이벤트 리스너와 연관된 구독자 메서드actionHandler()
가 추가되며, 이는 이벤트 전달 시 이벤트에 정보를 출력합니다. doAction()
메서드가 호출되어action
이벤트를 전달합니다.
package { import flash.display.Sprite; import flash.events.Event; public class EventDispatcherExample extends Sprite { public function EventDispatcherExample() { var dispatcher:CustomDispatcher = new CustomDispatcher(); dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler); dispatcher.doAction(); } private function actionHandler(event:Event):void { trace("actionHandler: " + event); } } } import flash.events.EventDispatcher; import flash.events.Event; class CustomDispatcher extends EventDispatcher { public static var ACTION:String = "action"; public function doAction():void { dispatchEvent(new Event(CustomDispatcher.ACTION)); } }
Tue Jun 12 2018, 03:17 PM Z