Flash/AS3의 이벤트는 표시 목록과 매우 관련이 있습니다. 캡처, 타겟 및 버블 링 단계가 있으며, 무대에서 볼 수있는 객체는 훌륭한 단계입니다.AS3 개념은 비 표시 객체에서 이벤트 버블 링과 유사합니까?
그러나 디스플레이 목록 외부의 비 표시 물체에 대해서도 비슷한 개념이 있습니까?
우리는 객체 B에서 C가 생성되었고 객체 A에서 B가 생성되었고 객체가 표시 객체가 아닙니다. A는 어떻게 C에서 일어나는 일을들을 수 있습니까?
Flash/AS3의 이벤트는 표시 목록과 매우 관련이 있습니다. 캡처, 타겟 및 버블 링 단계가 있으며, 무대에서 볼 수있는 객체는 훌륭한 단계입니다.AS3 개념은 비 표시 객체에서 이벤트 버블 링과 유사합니까?
그러나 디스플레이 목록 외부의 비 표시 물체에 대해서도 비슷한 개념이 있습니까?
우리는 객체 B에서 C가 생성되었고 객체 A에서 B가 생성되었고 객체가 표시 객체가 아닙니다. A는 어떻게 C에서 일어나는 일을들을 수 있습니까?
당신은 적어도 두 가지 전략을 사용하여 문제를 해결할 수 있습니다 : 이벤트
1) 재발송. 어떤 이벤트를 C
이 전달한다고 가정 해보십시오. B
에서 우리는이 이벤트를 구독하고 재발 dispatch :
var c:C = new C();
c.addEventListener("myEvent", myEventHandler);
private function myEventHandler (event:Event):void
{
dispatchEvent(event);
}
당신이이 경우에 사용자 정의 이벤트 클래스에 대한 제대로 implement clone()
을해야 기억하십시오.
C
의 이벤트를 B
의 다른 이벤트로 변환하여 발송할 수도 있습니다.
2) C
에서 A
으로 전달하십시오. interface flash.events.IEventDispatcher
을 사용하면됩니다. 다음과 같은
뭔가 :
B
에서 :
private var _c:IEventDispatcher;
public function get innerInstance():IEventDispatcher
{
return _c;
}
public function B()
{
_c = new C();
}
A
에서 : 당신의 대답에 대한
var b:B = new B();
b.innerInstance.addEventListener("myEvent", myEventHandler);
감사합니다! 나는 두 가지 전략이 어떻게 작용하는지 이해하고 있다고 생각한다. 최소한 1)은 나에게 분명하다. 중간 개체 (이 경우 B)가 관련되어야한다는 '정상적인'표시 목록 기반 이벤트 처리의 단점으로 생각합니다. 그러나 어쩌면 더 좋은 대안이 없을 수도 있습니다. "A에서 함수를 호출하는 B에서 함수를 호출하는 C"와 비교할 때 개체가 부모를 알 필요가 없으므로 메서드가 더 나은 것은 물론입니다. – Guppel
다음 코드를 작성하여 코드 행을 저장할 수 있습니다. c.addEventListener ("myEvent", dispatchEvent); – maxmc
@maxmc 와우! 나는 그것에 대해 생각하지 않았다. 나에게 그것은 훌륭한 생각이다! 그것을 가리켜 주셔서 감사합니다! – Constantiner