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





Расширьте класс EventDispatcher или реализуйте интерфейс IEventDispatcher из пакета flash.events.
Да, это должно быть возможно. Расширьте EventDispatcher следующим образом:
import flash.events.*;
public class MyDispatcher extends EventDispatcher {
private function doIt(event:Event):void {
dispatchEvent(new Event("myEvent"));
}
Абсолютно да. Чтобы воспользоваться преимуществами обработки событий, ваш настраиваемый объект должен расширять 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());
}
Есть смысл?
Это именно то, что я сделал! расширенный EventDispatcher и унаследованный dispatchEvent
Спасибо ребята