event capture

 

이벤트 캡쳐

버블:

답변 1.
target 은 이벤트를 발생시킨 객체입니다.
currentTarget은 현재 이벤트가 발생된 객체입니다.
생각같아선 발생시킨 곳에서 발생되는 것이 당연합니다만,
버블링/캡쳐란 것때문에 둘이 서로 다를때가 있습니다.
event속성중에 eventPhase가 2일때만 서로 같고 1이나 3일때는 달라요.

답변 2.
target <- 이벤트를 쏜놈 입니다.
보통은 EventDispatcher 이며 EventDispatcher를 상속받은 클래스.
IEventDispatcher를 구현한 클래스만이 event.target 이 될 수 있습니다.
currentTarget 은 보통은 화면에 출력되는 객체 입니다.
DO와 DOC는 트리구조이죠.
간다한 예를 들어… 나무가 있습니다.
나무의 뿌리(target) 부분에 링겔(이벤트리스너)을 꼽습니다.
최초 뿌리 부분에서의 약물이 잎사귀 까지 가는 단계를 캡쳐 단계라 합니다.
약물이 잎사귀(타겟)에 도달한 후 다시 (약물을 전달한)수액은 뿌리로 돌아갑니다.
이것은 버블링 단계라 합니다.
currentTarget 은 현재 (약물을 전달하는)수액이 어느지점에 있는가를 나타냅니다

 

 

캡쳐 단계에서 이벤트를 디스패치 할 것인지
아니면 타겟이나 버블 단계에서 할 것 인지에 대한 변화를 볼 수 있다.
또한 텍스트 부분을 선택함으로써
실제로 이벤트를 디스패치한 객체가 무엇인지(target)
이벤트 리스너로 등록된 객체가 무엇인지(currentTarget)
알 수 있다.

  private function MouseUp(e:MouseEvent){
   trace(“phase : ” + e.eventPhase);
   trace(“target : ” + e.target);
   trace(“currentTarget : ” + e.currentTarget); 
  }

phase : 1
target : [object TextField]
currentTarget : [object IconButton]
phase : 3
target : [object TextField]
currentTarget : [object IconButton]

stopImmediatePropagation
stopPropagation

 

관련 예제
http://rinn.kr/26

[binding]

Leave a Reply

Your email address will not be published. Required fields are marked *