2010-07-16 3 views
0

나는 VBox를 가지고 있고, 나는 클릭 할 핸들러를 할당했고, VBox 안에는 클릭을 위해 할당 된 핸들러가없는 이미지와 텍스트 같은 구성 요소가 있습니다. 텍스트 및 이미지를 클릭하면 클릭 기능이 호출됩니까? 개별적으로 핸들러를 지정하지 않고 컨테이너 레벨에서 어떻게 처리 할 수 ​​있습니까? 감사합니다.Flex에서 click 이벤트가 컨테이너 내부에서 어떻게 작동합니까?

답변

2

플렉스에서 이벤트 "거품"을 클릭하십시오. 당신이 이미지를 클릭하면, 그것은 부모에게 버블이 생길 때까지 그 부모와 그 부모의 부모에게 거품을 일으킨다.

클릭 청취자가있는 경우 버블 링 과정에서 도달하면 트리거합니다.

또한 currentTarget은 청취자가있는 객체를 참조하고 target은 실제로 클릭 한 것입니다.

이미지를 클릭하는 경우 이벤트는 이벤트를 트리거하는 컨테이너까지 버블 링되고 수신기 기능에서는 클릭 된 이미지가 event.target이 될 것이며 컨테이너는 event.currentTarget이됩니다.

또한 버블 링 프로세스에서 실제로 루트 부모로부터 시작하여 이것을 캡처 단계라고 부르며 거품을 다시 만듭니다. 이벤트 리스너에 useCapturePhase = true을 지정하지 않으면 이벤트가 다시 시작될 때 이벤트가 트리거됩니다. 이렇게하면 이벤트가 자녀에게 가지 않도록 할 수 있습니다. 캡처 단계를 사용하는 경우 이벤트 수신기에서 event.stopPropagation()으로 호출하면 컨테이너는 이벤트를 수신하지만 자식 이미지는 수신하지 않습니다.

0

이 질문에 대한 답변은 1 시간이 걸렸습니다 ... 시도해 보는 것이 더 빠를 것입니다. :)

하지만 예, 클릭 이벤트는 상위 컨테이너로 이동합니다. VBox에 핸들러를 추가하는 것이 좋습니다.

0

VBox와 같은 컨테이너가 클릭 이벤트를 전달하지 않는다고 확신했습니다. 아이들에게서 거품이 난다면.

그러나 컨테이너의 항목을 클릭하면 Click 이벤트가 거품이되어 컨테이너의 수신기가 트리거됩니다.

관련 문제