flash AS3事件调度。

我对Flash非常陌生,遇到了一些麻烦: 因此,我有Main类,该类导入了NavMenu类。在其中一个单击项的事件运行了我编写的函数:
dispatchEvent(new Event(\'my_event\'));
在我的主类中,在构造函数中我已经声明
addEventListener(\'my_event\', my_event_handler);
我有EventHandler,我想从舞台上删除一些孩子:
private function my_event_handler(event:Event):void
{
     trace(\"my Event\");
}
而且什么也没有发生,有人可以告诉我我做错了吗? 谢谢     
已邀请:
您需要将侦听器分配给调度它的对象。从您的代码中,不清楚正在做什么—但是例如,在您的Main中: //类Main
var _newClass:NewClass = new NewClass();
_newClass.addEventListener(\"my_event\"), handler);
然后在NewClass中调度事件
//class NewClass
this.dispatchEvent(new Event(\"my_event\"));
现在,您似乎可以触发该事件,但是您正在将侦听器添加到错误的对象中(在这种情况下,我认为是Main类,它也不在进行调度)。 注意-如果您在NewClass的构造函数中分派事件,则可能会错过该事件,因为在事件触发后您将分配侦听器。所以在其他地方开火。 更新- 正如@redconservatory和@Prototypical所指出的,在这种情况下可以利用冒泡。但是有一些限制。 通常,如果eventListener方法sig中的use_capture参数==
false
(默认值),则确实需要直接将对象定位为接收事件。要启用冒泡阶段:
this.addEventListener(\"my_event\", handler, true); //use_capture == true
现在,分派事件的孩子的父母将成为事件的合格目标,因为它“冒泡”备份了层次结构。在这种情况下,@ redconservatory的答案是正确的。重要的例外是冒泡仅适用于DisplayObject。 NewClass必须扩展DisplayObject或祖先,并添加到显示列表中才能使冒泡正常运行。 从liveDocs   当事件对象在显示列表中从一个节点移到另一个节点时,会发生捕获和冒泡:“父对子”捕获和“子对父”冒泡。此过程与继承层次结构无关。除了目标阶段之外,只有DisplayObject对象(诸如容器和控件之类的可视对象)可以具有捕获阶段和冒泡阶段。 有关事件传播非常重要的主题的完整讨论,请查看事件处理简介。     
尝试使事件泡沫达到Main Class
dispatchEvent(new Event(\'my_event\', true)); // \"true\" sets bubbling to true
然后在addEventListener中使侦听器进入Main阶段:
stage.addEventListener(\'my_event\', my_event_handler);
    

要回复问题请先登录注册