2013-10-31 2 views
0

부모 개체가이 이벤트를 수신하는 모든 자식에게 이벤트를 전달하기를 바랍니다.자녀가 부모 이벤트를 수신 할 수 있습니까?

var boxParent:Sprite = new Sprite(); 
var boxChild:Sprite = new Sprite(); 

this.addChild(boxParent); 
boxParent.addChild(boxChild); 

boxChild.addEventListener("parentTalking", onParentTalking); 
boxParent.dispatchEvent(new Event("parentTalking")); 

그렇게 할 수있는 방법이 있나요 : 내가 성공하지 아래 코드를 시도? 사전에

for (var i:int = 0; i < boxParent.numChildren; i++) { 
    (getChildAt(i) as MyChild).hereItGoesParentCommand(); 
} 

감사 :

은 BTW, 나는 내가 좋아하는 일을 피할 수 소원!

+0

자녀가 스테이지를 수신하고 로컬 메소드를 바인딩하고 부모 디스패치를 ​​수행하도록합니다. 이벤트는 최종 거품 단계에서 캡처됩니다 http://fahimchowdhury.blogspot.com/2011/06/as3-child-listening-to-parent.html – zamnuts

답변

1

이 메시지는 버블 링 이벤트가 아니며, 경우에 따라 this입니다. 기본적으로 부모가 전달한 이벤트를 자식이 수신 대기하도록 설정할 수는 없지만 자식 클래스의 부모를 참조해야합니다. 귀하의 경우 :

// Inside parent class 
dispatchEvent(new Event("event")); 

// Inside child class 
parent.addEventListener("event",handleEvent); 

이 링크에는 문제를 해결하는 데 필요한 정확한 질문과 답변이 있습니다. ActionScript 3에서 캡쳐 및 버블 링 단계가 어떻게 작동하는지 아직 이해하지 못했다면 코멘트를 달아서 몇 가지 설명에 대한 링크를 찾거나 직접 찾을 수 있습니다.

+0

안녕 Xiler, 당신의 솔루션은 내 문제를 해결! 이벤트 단계에 관해서는 몇 가지 문서를 읽었지만 아직 완전히 이해하지 못했습니다. 이벤트 흐름에서 "위로"무엇이 "다운"인지 조금 혼란 스럽습니다. 감사합니다. @ zamnuts! – Nevitones

관련 문제