This page was saved using jaction on 2006-09-04 8:33:40.
Address: http://flexdocs.kr/docs/flex2/langref/flash/events/EventDispatcher.html
Title: flash.events.EventDispatcher (Flex™ 2 레퍼런스 가이드)  •  Size: 45372
Packageflash.events
Classpublic class EventDispatcher
InheritanceEventDispatcher Inheritance Object
ImplementsIEventDispatcher
SubclassesAbstractInvoker , AsyncToken , AxisBase , Camera , Channel , ChannelSet , ChartItem , ContextMenu , ContextMenuItem , CSSStyleDeclaration , DataStore , DataTransform , DisplayObject , Effect , EffectInstance , EffectManager , FileReference , FileReferenceList , IME , LayoutManager , LoaderInfo , LocalConnection , LogLogger , MessageAgent , Microphone , NetConnection , NetStream , PrintJob , RadioButtonGroup , SetEventHandler , SharedObject , Socket , Sort , SortField , Sound , SoundChannel , State , StyleSheet , Timer , ToolTipManager , Tween , URLLoader , URLStream , Validator , XMLSocket

EventDispatcher 클래스는, IEventDispatcher 인터페이스를 Implements해, DisplayObject 클래스의 기본 클래스입니다. EventDispatcher 클래스에서는, 표시 리스트의 임의의 object를 event 타겟 등에 해, IEventDispatcher 인터페이스의 Methods를 사용할 수가 있습니다.

event 타겟은, Flash® Player event 모델의 중요한 부분입니다. event 타겟은, 이벤트가 표시 리스트 계층을 어떻게 흐를까에 관해서 중심적인 역할을 완수합니다. 마우스의 클릭이나 키 압하등의 이벤트가 발생하면, Flash Player 에 의해, event object가 표시 리스트의 루트로부터 event 플로우(flow)에 dispatch됩니다. event object는, 표시 리스트를 이동해 event 타겟으로 도달하면, 거기로부터 되돌려 표시 리스트를 왕복합니다. 이 event 타겟에의 왕복은, 개념으로서 3 개의 단계로 나눌 수 있습니다. capther 단계는, 루트로부터 event 타겟의 노드의 직전의 노드까지가 대상이 됩니다. 타겟 단계는, 이벤트의 타겟 노드만이 대상이 됩니다. 바브 링 단계는, 표시 리스트의 루트까지의 돌아가는 길을 구성하는 모든 후속 노드가 대상이 됩니다.

일반적으로, 유저 정의 클래스가 event dispatch 기능을 얻는 가장 간단한 방법은, EventDispatcher 를 확장하는 것입니다. 클래스가 이미 다른 클래스를 확장하고 있어 확장이 불가능한 경우, 대신에 IEventDispatcher 인터페이스를 Implements해, EventDispatcher 멤버를 작성해, 집약된 EventDispatcher 에 호출을 루팅 하는 단순한 훅을 기술할 수 있습니다.

View the examples



Public property
 property정의
 Inheritedconstructor : Object
특정의 object 인스턴스의 클래스 object 또는 constructor    함수에의 참조입니다.
Object
 Inheritedprototype : Object
[static] 클래스 또는 함수 object의 prototype object에의 참조입니다.
Object
Public Methods
 Methods정의
  EventDispatcher (target:IEventDispatcher = null)
EventDispatcher 클래스의 인스턴스를 집약합니다.
EventDispatcher
  addEventListener (type:String , listener:Function , useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
event listener objects를 EventDispatcher object에 등록해, listener가 이벤트의 통지를 받도록(듯이) 합니다.
EventDispatcher
  dispatchEvent (event:Event ):Boolean
이벤트를 event 플로우(flow)에 dispatch합니다.
EventDispatcher
  hasEventListener (type:String ):Boolean
EventDispatcher object에, 특정의 event 타입에 대해서 등록된 listener가 있을지 어떨지를 확인합니다.
EventDispatcher
 InheritedhasOwnProperty (name:String ):Boolean
object로 지정된 property가 정의되고 있는지 어떤지를 나타냅니다.
Object
 InheritedisPrototypeOf (theClass:Object ):Boolean
Object 클래스의 인스턴스가, Parameters로서 지정된 object의 prototype 체인내에 있을지 어떨지를 나타냅니다.
Object
 InheritedpropertyIsEnumerable (name:String ):Boolean
지정된 property가 존재해, 열거 가능한가 어떤가를 나타냅니다.
Object
  removeEventListener (type:String , listener:Function , useCapture:Boolean = false):void
EventDispatcher object로부터 listener를 삭제합니다.
EventDispatcher
 InheritedsetPropertyIsEnumerable (name:String , isEnum:Boolean = true):void
루프 처리에 대한 다이나믹 property의 가용성을 설정합니다.
Object
 InheritedtoString ():String
지정된 object의 string 표현을 돌려줍니다.
Object
 InheritedvalueOf ():Object
지정된 object의 원시적치를 돌려줍니다.
Object
  willTrigger (type:String ):Boolean
지정된 event 타입에 대해, 이 EventDispatcher object 또는 그 조상에게 event listener가 등록되어 있는지 어떤지를 확인합니다.
EventDispatcher
constructor    의 상세
EventDispatcher()constructor   
public 함수 EventDispatcher(target:IEventDispatcher = null)

EventDispatcher 클래스의 인스턴스를 집약합니다.

EventDispatcher 클래스는, 일반적으로 기본 클래스로서 사용됩니다. 이 때문에, 대부분의 개발자는 이 constructor    함수를 사용할 필요가 없습니다. 다만, IEventDispatcher 인터페이스를 Implements하는 상급 개발자는, 이 constructor    을 사용할 필요가 있습니다. EventDispatcher 클래스를 확장할 수 없기 때문에, 대신에 IEventDispatcher 인터페이스를 Implements할 필요가 있는 경우는, 이 constructor    을 사용해, EventDispatcher 클래스의 인스턴스를 집약합니다.

Parameters
target:IEventDispatcher (default = null) — EventDispatcher object에 dispatch되는 이벤트의 타겟 object입니다. 이 Parameters가 사용되는 것은, EventDispatcher 인스턴스가, IEventDispatcher 를 Implements하는 클래스 마다 집약되는 경우입니다. 이것은, 포함하고 있는 object를 이벤트의 타겟으로 하기 위해서 필요합니다. 클래스가 단순하게 EventDispatcher 를 Inheritance하는 경우는, 이 Parameters를 사용하지 말아 주세요.
Methods의 상세
addEventListener()Methods
public function addEventListener(type:String , listener:Function , useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void

event listener objects를 EventDispatcher object에 등록해, listener가 이벤트의 통지를 받도록(듯이) 합니다. event listener는, 특정의 타입의 이벤트, 단계, 및 우선도에 관한 표시 리스트내의 모든 노드에 등록할 수 있습니다.

event listener가 정상적으로 등록된 후에,addEventListener() 를 한층 더 호출해 우선도를 변경할 수 없습니다. listener의 우선도를 변경하려면 , 최초로 removeListener() 를 호출할 필요가 있습니다. 그 후, 같은 listener를 새로운 우선도 레벨로 재차 등록할 수 있습니다.

listener가 등록된 후에,type 또는 useCapture 에 다른 값을 설정해 재차 addEventListener() 를 호출하면, 다른 listener 등록이 작성되는 것에 주의해 주세요. 예를 들어, 최초로 listener를 등록할 경우에 useCapturetrue 로 설정하면, 그 listener는 capther 단계만으로 리스닝 합니다. useCapturefalse 를 설정해, 같은 listener objects를 사용해 재차 addEventListener() 를 호출하면, 다른 2 살의 listener가 등록됩니다. 1 개은 capther 단계에서 리스닝 하는 listener로, 이제(벌써) 1 개은 타겟 단계와 바브 링 단계에서 리스닝 하는 listener입니다.

타겟 단계 또는 바브 링 단계만을 대상으로 하는 event listener를 등록할 수 없습니다. 등록시에 이러한 단계가 짜 합쳐지는 것은, 바브 링은 타겟 노드의 조상 밖에 적용되지 않기 때문입니다.

event listener가 불필요하게 되었을 경우는,removeEventListener() 를 호출해, event listener를 삭제합니다. 삭제하지 않는 경우, 메모리의 문제가 발생할 가능성이 있습니다. 가베지 컬렉터는 참조를 가지는 object를 삭제하지 않기 때문에, 등록되어 있는 event listener에 관계한 object는 메모리로부터 자동적으로 제거되지 않습니다.

EventDispatcher 인스턴스를 복사해도, 거기에 관련지을 수 있고 있는 event listener는 복사되지 않습니다. 새롭게 작성한 노드에 event listener가 필요한 경우는, 노드를 작성한 후에, listener를 관련지을 필요가 있습니다. 다만, EventDispatcher 인스턴스를 이동했을 경우는, 관련지을 수 있고 있는 event listener도 함께 이동됩니다.

이벤트가 노드로 처리될 때, event listener가 그 노드에 등록중이면, event listener는 현재의 단계에서는 방아쇠 되지 않습니다. 다만, 바브 링 단계 등, event 플로우(flow)의 뒤의 단계에서 방아쇠 할 수가 있습니다.

이벤트가 노드로 처리되고 있을 때 event listener가 노드로부터 삭제되었을 경우에서도, 이벤트는 현재의 액션에 의해 방아쇠 됩니다. 삭제된 후는, 그 후의 처리로 다시 등록되지 않는 이상 event listener는 두 번 다시 불려 가지 않습니다.

Parameters
type:String — 이벤트의 형태입니다.
 
listener:Function — 이벤트를 처리하는 listener 함수입니다. 이 함수는, 다음의 예의 같게, Event object를 유일한 Parameters로서 받아, 아무것도 돌려주지 않는 것으로 있을 필요가 있습니다.

function(evt:Event) :void

함수는 임의의 이름을 가질 수가 있습니다.

 
useCapture:Boolean (default = false) — listener가, capther 단계, 또는 타겟 및 바브 링 단계에서 동작할지 어떨지를 판단합니다. useCapturetrue 로 설정하면, listener는 capther 단계만으로 이벤트를 처리해, 타겟 단계 또는 바브 링 단계에서는 처리하지 않습니다. useCapturefalse 로 설정하면, listener는 타겟 단계 또는 바브 링 단계만으로 이벤트를 처리합니다. 3 개의 단계 모두로 이벤트를 받으려면 ,addEventListener 를 2 회 호출합니다. useCapturetrue 로 설정해 1 번 호출해,useCapturefalse 로 설정해 한번 더 호출합니다.
 
priority:int (default = 0) — event listener의 우선도 레벨입니다. 우선도는, 부호 첨부 32 비트 정수로 지정합니다. 수치가 커지는 만큼 우선도가 높아집니다. 우선도가 n 의 모든 listener는, 우선도가 n-1 의 listener보다 먼저 처리됩니다. 복수의 listener에게 같은 우선도가 설정되어 있는 경우는, 추가된 차례로 처리됩니다. 디폴트의 우선도는 0 입니다.
 
useWeakReference:Boolean (default = false) — listener에게로의 참조가 강참조와 약참조의 머지않아일까를 판단합니다. 디폴트인 강참조의 경우는, listener의 가베지 콜렉션이 회피됩니다. 약참조에서는 회피되지 않습니다.

Throws
ArgumentError — 지정된 listener 는 함수가 아닙니다.

See also

dispatchEvent()Methods 
public function dispatchEvent(event:Event ):Boolean

이벤트를 event 플로우(flow)에 dispatch합니다. event 타겟은 EventDispatcher object입니다. 이것에 대해서 dispatchEvent() Methods가 불려 갑니다.

Parameters
event:Event — event 플로우(flow)에 dispatch되는 event object입니다. 이벤트가 재차 dispatch되면, 이벤트의 클론이 자동적으로 작성됩니다. 이벤트가 dispatch된 후에 그 이벤트의 target property는 변경할 수 없기 때문에, 재발송 출처리를 위해서(때문에)는 이벤트의 새로운 복사를 작성할 필요가 있습니다.

반환값
Boolean — 값이 true 의 경우, 이벤트는 정상적으로 dispatch되었습니다. 값이 false 의 경우, 이벤트의 dispatch에 실패했는지, 이벤트로 preventDefault() 가 불려 간 것을 나타내고 있습니다.

Throws
Error — event dispatch 재귀가 상한에 이르렀습니다.
hasEventListener()Methods 
public function hasEventListener(type:String ):Boolean

EventDispatcher object에, 특정의 event 타입에 대해서 등록된 listener가 있을지 어떨지를 확인합니다. 이것에 의해, EventDispatcher object가 event 타입의 처리를 event 플로우(flow) 계층의 어디서 변경했는지를 판단할 수 있습니다. 특정의 event 타입이 실제로 event listener를 방아쇠 할지 어떨지를 판별하려면 ,willTrigger() 를 사용합니다.

hasEventListener()willTrigger() 의 차이는,hasEventListener() 에서는 자신이 속하는 object만 검증되어willTrigger() 에서는 type Parameters로 지정된 이벤트의 event 플로우(flow) 전체가 검증되는 것입니다.

hasEventListener() 가 LoaderInfo object로부터 불려 갔을 경우는, 호출측을 액세스 할 수 있는 listener만 고려됩니다.

Parameters
type:String — 이벤트의 형태입니다.

반환값
Boolean — 지정한 타입의 listener가 등록되어 있는 경우는 true, 그 이외의 경우는 false 입니다.

관련 항목

removeEventListener()Methods 
public function removeEventListener(type:String , listener:Function , useCapture:Boolean = false):void

EventDispatcher object로부터 listener를 삭제합니다. 대응하는 listener가 EventDispatcher object에 등록되지 않은 경우는, 이 Methods를 호출해도 효과는 없습니다.

Parameters
type:String — 이벤트의 형태입니다.
 
listener:Function — 삭제하는 listener objects입니다.
 
useCapture:Boolean (default = false) — listener가, capther 단계, 또는 타겟 및 바브 링 단계에 대해서 등록되었는지 어떠했는지를 나타냅니다. listener가 capther 단계 뿐만이 아니라 타겟 단계와 바브 링 단계에도 등록되어 있는 경우는,removeEventListener() 를 2 회 호출해 양쪽 모두의 listener를 삭제할 필요가 있습니다. 1 회는 useCapture()true 로 설정해, 이제(벌써) 1 회는 useCapture()false 로 설정할 필요가 있습니다.

관련 항목

willTrigger()Methods 
public function willTrigger(type:String ):Boolean

지정된 event 타입에 대해, 이 EventDispatcher object 또는 그 조상에게 event listener가 등록되어 있는지 어떤지를 확인합니다. 지정된 타입의 이벤트가 이 EventDispatcher object 또는 그 자손에게 dispatch되었을 때에, event listener가 event 플로우(flow)의 임의의 단계에서 방아쇠 되는 경우, 이 Methods는 true 를 돌려줍니다.

hasEventListener() Methods와 willTrigger() Methods의 차이는,hasEventListener() 에서는 자신이 속하는 object만 검증되어willTrigger() Methods에서는 type Parameters로 지정된 이벤트의 event 플로우(flow) 전체가 검증되는 것입니다.

willTrigger() 가 LoaderInfo object로부터 불려 갔을 경우는, 호출측을 액세스 할 수 있는 listener만 고려됩니다.

Parameters
type:String — 이벤트의 형태입니다.

반환값
Boolean — 지정한 타입의 listener가 방아쇠 되었을 경우는 true, 그 이외의 경우는 false 입니다.
Examples

다음의 예에서는,EventDispatcherExample 클래스 및 EventDispatcher 의 서브 클래스인 CustomDispatcher 클래스를 사용해, custom 이벤트의 작성 방법 및 dispatch 방법을 나타냅니다. 이 예에서는, 다음의 처리를 실행합니다.
  1. EventDispatcherExample 의 constructor    은, 로컬 변수 dispatcher 를 작성해, 그것을 새로운 CustomDispatcher 인스턴스에 할당합니다.
  2. CustomDispatcher 에서는, 이벤트가 action 라는 이름으로,doAction() Methods를 선언하도록(듯이) string가 설정되어 있습니다. 이 Methods가 불려 가면,EventDispatcher.dispatchEvent() 를 사용해, action 이벤트가 작성되어 dispatch됩니다.
  3. 다음에,dispatcher property가 사용되어,action event listener와 거기에 관련하는 subscribers메솟드 actionHandler() 가 추가됩니다. 이 Methods는, 이벤트가 dispatch되면, 이벤트에 관한 정보만을 출력합니다.
  4. doAction() Methods가 불려 가면,action 이벤트가 dispatch됩니다.
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));
    }
}






 

코멘트가 추가되었을 경우, 메일로 받기. | 코멘트 리포트

현재의 페이지: http://flexdocs.kr/docs/flex2/langref/flash/events/EventDispatcher.html