1) Событие повторной отправки не совпадает с пузырьком.Скажем, у нас есть какой-то (сторонний) компонент, который отправляет событие без всплывания.И мы хотим делегировать это событие дальше.В этом случае нам нужно повторно отправить событие:
myButton.addEventListener(MouseEvent.CLICK, myButtonClickHandler);
...
private function myButtonClickHandler(event:MouseEvent):void
{
dispatchEvent(event);
}
В этом случае строка dispatchEvent(event)
создает новое событие путем его клонирования.
Если вы уверены, что ваши компоненты с пользовательскими событиями выигралине могут быть использованы другими, вы можете не использовать clone()
.Но кто знает ... Лучшие практики - это лучшие практики для их следования.
2) Event
Метатег решает по крайней мере две практические задачи:
- Это позволяет компилятору проверять использование соответствующего атрибутав MXML, когда кто-то использует целевой компонент в MXML.Таким образом, компилятор выдаст ошибку без
Event
объявления метатега, поскольку атрибут события будет неизвестен. - Это позволяет IDE использовать завершение кода доступных событий при вводе
addEventListener
в ActionScript.
3) Ключевое слово dynamic
позволяет использовать любые поля с экземпляром, даже если они не объявлены в классе без предупреждения компилятора (но без преимущества завершения кода в среде IDE).В классе событий это позволяет переносить любые пользовательские данные с ним.Очень часто некоторые классы событий объявляют поле data
типа Object
для этих целей, избегая использования классов dynamic
(например, в DataEvent
).