2012-01-10 1 views
1

많은 이미지가있는 컨테이너가 있습니다. 각 이미지에서 클릭 및 기타 마우스 이벤트에 대한 리스너를 추가하는 대신, 이미지의 부모에서만 해당 이벤트를 수신하고 싶습니다.ActionScript 3에는 일종의 이벤트 위임 시스템이 있습니까?

그럴 수 있습니까?

+1

그렇습니다. AS가 버블 링을 지원하기 때문에 수행 할 수 있지만 기본 제공 방법이 없으므로 다른 사람의 라이브러리 또는 롤을 사용해야합니다. – zzzzBov

+5

내가 의견을 낮추면 그럴 것입니다. –

답변

7
container.addEventListener(MouseEvent.CLICK, clickHandler); 
private function clickHandler(e:MouseEvent):void { 
    trace(e.currentTarget); // references container 
    trace(e.target); //references container's child or container itself depending on what has been clicked 
} 
+0

예를 들어 마우스로 작동합니까? – Francisc

+0

예, 모든 종류의'MouseEvent'와 작동합니다. – package

+0

패키지를 이용해 주셔서 감사합니다. – Francisc

1

귀하의 질문을 정확하게 이해하는 것은 완전히 가능합니다. 그래서 가정이 같은있다 :

parent.addEventListener(MouseEvent.CLICK, handleClick); 

다음 핸들러가

private function handleClick(e:MouseEvent) { 
    // cast the target of the event as the correct class 
    var clickedChild:Child = Child(e.target); 

    // Do whatever you want to do. 
} 
의 모양은 다음과 같습니다

parent.addChild(new Child()); 
parent.addChild(new Child()); 
parent.addChild(new Child()); 
parent.addChild(new Child()); 

을 그런 다음 thusly 히 부모에게 이벤트 리스너를 결합 할 수 있어야한다

이 값을 useCapture addEventListener 인수와 결합하여 버블 링면이 아닌 이벤트 캡쳐 측에 이벤트를 첨부 할 수도 있습니다. 또한 .stopPropagation() 메서드를 이벤트에 사용하면 다른 이벤트 처리기도 실행되지 않습니다. ...

하지만 당신이하려고하는 것에 대해 더 많이 알지 못해도 사용할 필요가 있다면 말하기 어렵습니다. 그러나 바라건대 그것은 당신에게 옳은 방향으로 추진력을 줄 것입니다.

+0

마우스 오버로 작동합니까? – Francisc

+1

@Francisc 예 ... –

+0

고맙습니다, 32bitkid. – Francisc