Apache flex Flex AS3-在类之间调度事件

Apache flex Flex AS3-在类之间调度事件,apache-flex,actionscript-3,Apache Flex,Actionscript 3,我以为我已经在Flex中定义了自定义事件,但似乎没有。我试图通过在类之间调度事件而不是使用可怕的parent.parent.parent语句来松散地耦合我的应用程序 我有一个自定义HBox类内的组合框。。。为了简单起见,我正在做以下工作 public function onComboBoxChange(event:MouseEvent):void { trace("dispatching event"); dispatchEvent(new Event("hello")); }

我以为我已经在Flex中定义了自定义事件,但似乎没有。我试图通过在类之间调度事件而不是使用可怕的parent.parent.parent语句来松散地耦合我的应用程序

我有一个自定义HBox类内的组合框。。。为了简单起见,我正在做以下工作

public function onComboBoxChange(event:MouseEvent):void {
    trace("dispatching event");
    dispatchEvent(new Event("hello"));
}
我有一个自定义列表类,我想响应事件

public function CustomList() {
    //...
    this.addEventListener(FlexEvent.INITIALIZE, onInit);
}

private function onInit(event:FlexEvent):void {
    this.addEventListener("hello", onHello);
}

private function onHello(event:Event):void {
    trace("oh hello");
}
但是,永远不会调用事件侦听器

CustomList和CustomHBox都具有相同的父级

我的印象是,您可以从任何对象发送事件,而所有其他活动对象都可以侦听它。不是那么简单吗


谢谢

您的列表要么需要直接调用combobox上的addEventListener(“hello”),要么combobox需要使用true参数分派事件


您对事件的概念缺少“冒泡”,您可以在上的flash中阅读更多关于事件的信息。

如果您的事件冒泡,您应该不会有问题。CustomList和CustomHBox的父级将为您从OnComboxChange发送的事件向CustomHBox添加事件侦听器。事件处理程序应在此父类中,它将传递事件/执行CustomList ie中需要执行的任何代码:

public class Main {

public var customList:CustomList;
public var customHBox:CustomHBox;
//...
public function init():void {
   customHBox.addEventListener(MyCustomEvent.EVENT_NAME, myCustomEventHandler, false, 0, true);
}
//...
public function myCustomEventHandler(event:MyCustomEvent):void {
   customList.update(event.data);
}
//...
}

这是一个非常简单的例子。我的真实情况是一个自定义事件,它确实使用了bubbles参数。我现在意识到的是,你只能向上冒泡事件,如果你想“横向”的话,你必须重新发送它们。值得注意的是,冒泡只对UI元素有效。