This page was saved using jaction on 2006-09-04 8:33:46.
Address: http://flexdocs.kr/docs/flex2/langref/flash/events/IEventDispatcher.html
Title: flash.events.IEventDispatcher (Flex™ 2 레퍼런스 가이드)  •  Size: 32431
Packageflash.events
인터페이스public interface IEventDispatcher
SubinterfacesIAxis , ICollectionView , IFlexDisplayObject , IFocusManagerContainer , ILayoutManagerClient , IList , IListItemRenderer , ILogger , IPreloaderDisplay , IPropertyChangeNotifier , ISystemManager , IViewCursor
인프리멘타AbstractService , DataService , EventDispatcher

IEventDispatcher 인터페이스는, event listener를 추가 또는 삭제하는 Methods의 정의, 특정의 타입의 event listener가 등록되어 있는지 어떤지의 체크, 및 이벤트의 dispatch을 실시합니다.

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

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

View the examples



Public Methods
 Methods정의
  addEventListener (type:String , listener:Function , useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
event listener objects를 EventDispatcher object에 등록해, listener가 이벤트의 통지를 받도록(듯이) 합니다.
IEventDispatcher
  dispatchEvent (event:Event ):Boolean
이벤트를 event 플로우(flow)에 dispatch합니다.
IEventDispatcher
  hasEventListener (type:String ):Boolean
EventDispatcher object에, 특정의 event 타입에 대해서 등록된 listener가 있을지 어떨지를 확인합니다.
IEventDispatcher
  removeEventListener (type:String , listener:Function , useCapture:Boolean = false):void
EventDispatcher object로부터 listener를 삭제합니다.
IEventDispatcher
  willTrigger (type:String ):Boolean
지정된 event 타입에 대해, 이 EventDispatcher object 또는 그 조상에게 event listener가 등록되어 있는지 어떤지를 확인합니다.
IEventDispatcher
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가 불필요하게 되었을 경우는,EventDispatcher.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의 가베지 콜렉션이 회피됩니다. 약참조에서는 회피되지 않습니다.
dispatchEvent()Methods 
public function dispatchEvent(event:Event ):Boolean

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

Parameters
event:Event — event 플로우(flow)에 dispatch되는 event object입니다.

반환값
Boolean — 이벤트로 preventDefault() 이 불려 가지 않는 한 true 를 돌려줍니다. 불려 갔을 경우는 false 를 돌려줍니다.
hasEventListener()Methods 
public function hasEventListener(type:String ):Boolean

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

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

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

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

See also

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 회는 useCapturetrue 로 설정해, 이제(벌써) 1 회는 useCapturefalse 로 설정할 필요가 있습니다.
willTrigger()Methods 
public function willTrigger(type:String ):Boolean

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

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

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

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

다음의 예에서는 IEventDispatcherExample 및 DecoratedDispatcher 샘플 클래스를 사용해, IEventDispatcher 클래스의 Implements 방법과 사용 방법을 나타냅니다. 이것을 실시하려면 , DecoratedDispatcher 의 각 Methods를 EventDispatcher 와 같은 방법으로 Implements합니다. IEventDispatcherExample 의 constructor    으로, DecoratedDispatcher 클래스의 새로운 인스턴스를 decorDispatcher 라는 이름으로 작성합니다. 또, 이 decorDispatcher 변수를 사용해, addEventListener() 를 custom event doSomething 로 호출합니다. 이 custom 이벤트는 didSomething() 로 처리되어trace() 를 사용해 1 행의 텍스트가 출력됩니다.
 
package {
        import flash.events.Event;
        import flash.display.Sprite;
       
        public class IEventDispatcherExample extends Sprite {
                public function IEventDispatcherExample() {
                        var decorDispatcher:DecoratedDispatcher = new DecoratedDispatcher();
                        decorDispatcher.addEventListener("doSomething", didSomething);
                        decorDispatcher.dispatchEvent(new Event("doSomething"));
                }
               
                public function didSomething(evt:Event) :void {
                        trace(">> didSomething");
                }
        }
}

import flash.events.IEventDispatcher;
import flash.events.EventDispatcher;
import flash.events.Event;
               
class DecoratedDispatcher implements IEventDispatcher {       
    private var dispatcher:EventDispatcher;
               
    public function DecoratedDispatcher() {
        dispatcher = new EventDispatcher(this);
    }
           
    public function addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false) :void{
        dispatcher.addEventListener(type, listener, useCapture, priority);
    }
           
    public function dispatchEvent(evt:Event) :Boolean{
        return dispatcher.dispatchEvent(evt);
    }
    
    public function hasEventListener(type:String) :Boolean{
        return dispatcher.hasEventListener(type);
    }
    
    public function removeEventListener(type:String, listener:Function, useCapture:Boolean = false) :void{
        dispatcher.removeEventListener(type, listener, useCapture);
    }
                   
    public function willTrigger(type:String) :Boolean {
        return dispatcher.willTrigger(type);
    }
}






 

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

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