2011-02-13 18 views
1

docs에서 EventDispatcher의 dispatchEvent "...는 이벤트를 이벤트 흐름으로 전달합니다"라고합니다. 이 문구는 멋있고 실제로는 아무 것도 설명하지 않습니다.플래시 dispatchEvent가 실제로 어떻게 작동합니까?

말, 우리는 두 개의 리스너 객체에 "A" "A"이벤트를 기다리고, 그래서 어떤 행동을 우리는 호출에 기대해야합니까 :

a.dispatchEvent ("A")?

distpatchEvent를 반환하기 전에 두 수신기를 모두 즉시 호출 할 수 있습니까? 또는 일부 내부 플래시 플레이어 대기열에 대기하고 다음 프레임으로 들어가서 처리됩니까? 여기에 정의 된 플래시 플레이어의 동작에 의존 할 수 있습니까? 그렇지 않으면 동작이 정의되지 않았습니까? "이벤트를 이벤트 흐름으로 전달"하는 방법 이 질문은 실제로 코드의 제어 흐름에 영향을주기 때문에 중요합니다.

답변

0

그냥 대신 신호를 사용 : P

https://github.com/robertpenner/as3-signals/wiki

실제로는 사용하기 쉽고 이해하기 쉽지만 AS3 도구 상자에 큰 도움이됩니다.

Rob Penner의 비평 (위키 페이지의 맨 아래로 스크롤)

을 읽으면 AS3 기본 이벤트의 작동 방식에 대해 많이 배울 수 있습니다.
2

모두 표시 목록 계층 구조에 따라 다릅니다.

플래시의 이벤트 구조는 internal event model을 기반으로합니다.

  1. 스테이지는 첫 번째 개체 통보 될 것이며, 다음 이벤트는 가 목표에 도달 할 때까지 표시 목록을 조금씩 것이다. 이 단계는 캡처 단계이라고하는 입니다. 이를 사용하려면 이벤트 리스너에서 useCapturetrue으로 설정하십시오. note 을 수행하면 수신 대기중인 개체가 이벤트를 대상으로하는 개체 인 의 부모가 아닌 한 그렇게하는 것이 의미가 없습니다. 이 은 이벤트 도청이라고합니다.

  2. 다음 단계는 대상 단계입니다. 이것은 대부분의 이벤트로 알려진 의 동작입니다. 대상 디스플레이 개체 ( 에 이벤트에 대한 수신기가있는 수신기)는 이벤트를 받고 수신기에 코드를 수행합니다.

  3. 최종 단계는 버블 링 단계으로 불린다. 이벤트가 수신 된 후 다음에 이벤트가 디스플레이 목록을 위로 비우는 경우입니다. 은 객체의 자식이 전달한 이벤트를 수신하는 방법을 알아야하기 때문에 이벤트 바블링은 사용자 지정 이벤트를 전달하는 데 매우 중요합니다.

    Object.dispatchEvent(new Event("CHANGE", true, false));

    Object 당신이에서 파견하고있는 대상은 다음과 같습니다 이벤트를 파견 할 때

, 나는 일반적으로이 구문을 (Event.CHANGE 그냥 일반적인 예입니다)를 사용합니다. 첫 번째 매개 변수는 발송중인 이벤트입니다. 두 번째 매개 변수는 bubbles입니다. 마지막은 cancelable 속성입니다. Event.cancelableEvent.preventDefault()을 통해 이벤트의 기본 동작 (IE : 마우스 클릭)을 방지하는 데 사용됩니다.

참조 :

관련 문제