Согласитесь с Райаном, и я бы добавил, что иногда мне было бы полезно, при обработке событий клавиатуры в целом, подключать моих слушателей к фазе capture события, а не к цели или фазы пузырьков (обратите внимание на третий аргумент, по умолчанию false):
stage.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, true);
Думая, например, о казуальной игре, в которой клавиши со стрелками как-то управляют основным действием (тетрис, может быть - вращение влево, вращение вправо), реакция на событие во время фазы захвата означает, что может иметь определенные преимущества. Из документов:
На этапе захвата Flex проверяет
предки события на дисплее
список, чтобы увидеть, какие из них зарегистрированы
в качестве слушателя мероприятия. сгибать
начинается с корневого предка и
продолжается вниз по списку отображения до
прямой предок цели. В большинстве
случаи, коренные предки являются
Этап , затем SystemManager и
затем объект Application.
Таким образом, в этом случае вы можете быть уверены, что слушатель сцены получит уведомление первым, прежде чем кто-либо другой, и сможет соответствующим образом отреагировать - либо полностью прекратив распространение события (иногда вы можете захотеть это сделать), либо переводя его в более специфичное для приложения событие:
private function handleKeyDown(event:KeyboardEvent):void
{
if (event.keyCode == Keyboard.LEFT)
{
dispatchEvent(new Event("rotateLeft"));
}
else if (event.keyCode == Keyboard.RIGHT)
{
dispatchEvent(new Event("rotateRight"));
}
else
{
event.stopPropagation();
}
}
... и удерживает вас от перетаскивания слушателей клавиатуры по всему вашему приложению.
Фазы распространения события описаны более подробно здесь . Проверьте это также - там есть отличная информация, которую стоит знать.