在as3中添加自定义事件侦听器

Mar*_*mew 5 events flex3 actionscript-3

我已经通过论坛帖子和教程进行了大量阅读,但我仍然无法将我的大脑包围在事件和事件监听器中.我有一个非常简单的例子,但我无法让它工作.

我在转发器中有一个自定义对象的arrayCollection,当单击其中一个对象时,我想要一个不同的组件来显示与该对象关联的数据.

这就是我所拥有的,但是监听器从不响应(调度程序似乎正在工作,因为新事件已创建,我可以看到具有正确输出的跟踪.)我怀疑这是因为当我调用addEvent Listener时,我是在错误的对象上这样做.我的理解是,显示对象数据的对象是应该具有事件监听器的对象,并且监听这种性质的所有事件,但也许我误解了.

我的自定义事件:

public class SelectObjectEvent extends Event
    {
        public function SelectObjectEvent(customEventString:String, myObject:customObject)
        {
              super(customEventString, true, false);
              trace(customEventString+" "+myObject);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的自定义对象具有以下函数,该函数在单击时调用:

public function selectObject(myObject:customObject):void
        {
            dispatchEvent(new SelectObjectEvent("OBJECT_SELECTED", customObject));              
        }
Run Code Online (Sandbox Code Playgroud)

我想要显示所选对象的组件具有以下构造函数:

public function SelectedObjectDisplayClass()
        {
            addEventListener("OBJECT_SELECTED", this.showObject)
        }

        public function showObject(event:Event):void
            {  
            trace("Show object: "+event); 
        } 
Run Code Online (Sandbox Code Playgroud)

fen*_*mas 3

目前还不清楚最后两个代码块在哪里,但看起来您需要调用addEventListenerextends 的对象EventDispatcher

也就是说,如果您的第二个块属于名为 的自定义对象Clickable,该对象在单击时扩展EventDispatcher并调用dispatchEvent(),那么您的组件应该调用myClickable.addEventListener(...)其中 myClickable 是 Clickable 的实例。那有意义吗?

但是假设您的第三个代码块与第二个代码块不在同一类中,那么您看起来并没有这样做。您正在向拥有第三块代码的类添加一个侦听器,我收集的代码不是 extends 的代码块EventDispatcher