2

我有一个简单的对象,它从 Google Maps API 获取地理编码数据,我希望它根据 Google 的响应调度一组自定义事件。但是,我没有这个类的 addEventListener() 和 dispatchEvent() 方法,因为它没有扩展 UIComponent。有没有办法在 Flex 3 中创建自定义事件而不从 UIComponent 继承?

4

4 回答 4

8

绝对没错。要利用事件处理,您的自定义对象应该扩展 EventDispatcher:

public class MyClass extends EventDispatcher
{
    // ...

    public function myFunction():void
    {
        dispatchEvent(new Event("myEvent"));
    }
}

这负责调度事件。

然后,如果您有需要,您还可以创建一个扩展 Event 的单独类,它为您提供了附加事件特定数据以在处理程序中使用的选项(除其他外):

public class MyClass extends EventDispatcher
{
    // ...

    public function myFunction():void
    {
        dispatchEvent(new MyEvent(someData));
    }
}

public class MyEvent extends Event
{
    private var _myEventData:Object;

    public function MyEvent(eventData:Object)
    {
        _myEventData = eventData;
    }
}

..所以在你的处理程序中,你只需:

private function myHandler(event:MyEvent):void
{
    trace(event.myEventData.toString());
}

有道理?

于 2009-01-14T21:46:08.047 回答
2

扩展 EventDispatcher 类,或实现 flash.events 包中的 IEventDispatcher 接口。

于 2009-01-14T21:33:14.593 回答
1

是的,这应该是可能的。像这样扩展 EventDispatcher:

  import flash.events.*;  
  public class MyDispatcher extends EventDispatcher { 
    private function doIt(event:Event):void {  
      dispatchEvent(new Event("myEvent"));  
  }  
于 2009-01-14T21:41:31.330 回答
0

这正是我所做的!扩展的 EventDispatcher 和继承的 dispatchEvent

谢谢小伙子们

于 2010-10-22T13:25:12.023 回答