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