Можете ли вы создавать собственные события для объектов, не основанных на UIComponent, во Flex 3? - PullRequest
2 голосов
/ 15 января 2009

У меня есть простой объект, который получает данные геокодирования из API Карт Google, и я хочу, чтобы он отправлял набор пользовательских событий в зависимости от ответа от Google. Однако у меня нет методов addEventListener () и dispatchEvent () в этом классе, потому что он не расширяет UIComponent. Есть ли способ создания пользовательских событий в Flex 3 без наследования от UIComponent?

Ответы [ 4 ]

8 голосов
/ 15 января 2009

Абсолютно да. Чтобы воспользоваться преимуществами обработки событий, ваш пользовательский объект должен расширять 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());
}

Имеет смысл?

2 голосов
/ 15 января 2009

Расширение класса EventDispatcher или реализация интерфейса IEventDispatcher из пакета flash.events.

1 голос
/ 15 января 2009

Да, это должно быть возможно. Расширьте EventDispatcher так:

  import flash.events.*;  
  public class MyDispatcher extends EventDispatcher { 
    private function doIt(event:Event):void {  
      dispatchEvent(new Event("myEvent"));  
  }  
0 голосов
/ 22 октября 2010

Именно это я и сделал! расширенный EventDispatcher и унаследованное dispatchEvent

Спасибо, ребята

...