AS3概念类似于事件冒泡,在非显示对象中?

时间:2011-08-26 10:16:44

标签: actionscript-3 events event-handling event-bubbling

Flash / AS3中的事件与显示列表非常相关。有捕获,目标和冒泡阶段,这对于舞台上可见的物体来说非常棒。

但在显示列表之外是否存在类似的非显示对象概念?

如果我们有对象A,B和C,其中C是在对象B中创建的,B是在对象A中创建的,并且它们都不是显示对象:A如何监听C中发生的事情?

1 个答案:

答案 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);