2012-06-14 3 views
2

EventDispatcher.addEventListener()에는 이벤트 유형 (String 유형의 매개 변수)에 대한 첫 번째 매개 변수가 필요합니다.모든 이벤트에 대해 하나의 수신기를 추가하는 방법은 무엇입니까?

그러나 현재 개체는 여러 유형의 이벤트를 생성 할 수 있습니다.

모든 핸들러를 하나의 핸들러에서 처리 할 수 ​​있습니까? 형식 매개 변수 또는 뭔가에 대해 null을 전달할 수 있습니까?

+1

아니요, addEventListener는 유형에 단일 처리기를 추가하는 데 사용되며 다른 유형에 대해 여러 번 호출 할 수 있으며 동일한 처리기를 제공 할 수 있지만 그 이유는 무엇입니까? 무엇을 성취하려고합니까? –

+0

생성 될 때 어떤 이벤트가 발생하는지 배우려고합니다. –

답변

2

당신은 길 주변에하고는, dispatchEvent 기능을 확장하려고한다 :

public override function dispatchEvent(evt:Event):Boolean { 
    trace(evt.type); 
    return super.dispatchEvent(evt); 
} 

당신은이 개체에 파견 된 모든 이벤트를 처리하기 위해 여기에 코드를 넣을 수 있습니다.

+0

모든 이벤트가 Event 클래스 정의 내에있는 것은 아니기 때문에 다른 제안보다 더 나은 옵션이라고 생각합니다. 많은 이벤트가 Event의 하위 클래스로 정의되어 있기 때문에 하위 클래스 또는 패치 된 원숭이 내의 디스패치 이벤트를 재정의하는이 해결 방법 이벤트에 관심이있는 오브젝트의 버전이 잘 작동합니다. – shaunhusain

+0

구현하기가 매우 쉽습니다. – turbosqel

2

예, 가능합니다.입니다.

이벤트 클래스의 getQualifiedClassName을 사용하는 경우 describeType을 사용하여 유형을 얻을 수 있습니다. 그런 다음 동일한 이벤트 클래스에서 공용 정적 유형을 사용하는 사용자 정의 이벤트를 문자열로 사용한다고 가정하면 추가 할 수있는 모든 유형을 알 수 있습니다. 그런 다음 모든 유형을 반복하고 모든 유형의 리스너를 운영자에게 추가 할 수 있습니다.

이 아이디어는 templelibrary (EventUtils.addAll)에 포함되어 있으므로 사용하시기 바랍니다.

참조 설명서 :http://templelibrary.googlecode.com/svn/trunk/doc/temple/utils/types/EventUtils.html

관련 문제