如何从Stage引用中正确分派事件

时间:2014-07-07 15:24:44

标签: actionscript-3 actionscript

我有时会遇到以下问题,而且我总是无法克服它。

我想解决方案必须以不同的方式提供,但我想找出为什么这种代码不起作用。

情景:

主类是Main.as,其中有一个Sprite1实例添加到Main displayList。 还有MyCustomClass实例,它在构造函数中引用Stage,以便能够调度MyCustomClass.ABC事件。

(在MyCustomClass中)

stageRef.dispatchEvent(new Event(MyCustomClass.ABC));

然后在我的Main中,sprite1实例放在Main的displayList上我想监听MyCustomClass事件调度的MyCustomClass.ABC事件。

最后,如果我将以下代码放在我的Main.as中:

sprite1.addEventListener(MyCustomClass.ABC, onABC);

它不起作用所以我必须通过Main类中的阶段引用直接订阅此事件。

stage.addEventListener(MyCustomClass.ABC, onABC);

我认为在捕获阶段,事件从Stage传播到所有子节点,而sprite1实例是Main的子节点,它是Stage的子节点。所以,对我来说它应该有效,但事实并非如此。

我在这个项目中创建了一个描述displayList对象的图像。请看 链接http://www.iv.pl/images/61170779800943350498.png

提前感谢任何解释为什么它不起作用。它不适用于我传递给侦听器(捕获)或调度程序(冒泡)的任何参数。

1 个答案:

答案 0 :(得分:0)

捕获阶段事件从目标到阶段,而冒泡阶段从阶段到目标。当stage是目标时,显示列表中的任何对象都无法捕获该调度事件,因为它们不能包含在事件阶段中。目标(阶段)进入阶段,然后回到目标(阶段),两者之间没有任何东西可以捕获事件。

通常在使用stage来调度事件时,程序员希望利用阶段性全局性(可以论证的设计),但在这种类型的设计中,它也意味着只有阶段应该听取自己的调度。