Flash / AS3中的事件与显示列表非常相关。有捕获,目标和冒泡阶段,这对于舞台上可见的物体来说非常棒。
但在显示列表之外是否存在类似的非显示对象概念?
如果我们有对象A,B和C,其中C是在对象B中创建的,B是在对象A中创建的,并且它们都不是显示对象:A如何监听C中发生的事情?
答案 0 :(得分:2)
您可以使用至少两种策略解决问题:
1)重新安排事件。说C
发送一些事件。在B
我们订阅此事件并重新发送它:
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);