0

我在一个 flex 组件中有我想监听事件的代码,事件的源是一个自定义类,它由另一个类运行的另一个类运行,等等。我的印象是一个事件会通过在整个应用程序中,所以我希望如果我像这样在类中分派自定义事件..

    private function finishEvent():void {
        var evt:EventDispatcher = new EventDispatcher;
        var finished:Event = new Event("finishedInterpret");
        evt.dispatchEvent(finished);
    }

然后我可以像这样在我的组件中抓取它:

public function interpret(data:Array):void {
    addEventListener("finishedInterpret", applyInferences);
    db.executeBatch();
}

该事件基本上在 executeBatch 完成时触发,并且正在调用 finishEvent,但我是侦听器没有得到任何东西。我尝试将其设置为 db.addEventListener,但现在已经生效。

4

1 回答 1

1

事件应该发生的方式是一个对象分派事件,这些事件的消费者监听来自该对象的事件。除非您有一个全局事件分派器(不是典型的),否则没有应用程序范围的事件分派。

我发现这是最好的使用模式:子组件调度事件,并且这些子组件的所有者监听他们的事件。例如:

child.addEventListener("finishedInterpret", applyInferences);

照原样,您的代码正在侦听来自自身的事件。

于 2011-03-29T22:51:43.333 回答