Это может быть очень неприятно, так как на это могут повлиять несколько факторов.
1) Добавьте слушателей событий в соответствующем месте.Код, который у вас есть, подходит для захвата, просто убедитесь, что он находится в родительском или выше месте, где запускаются события.
2) Вы должны убедиться, что у вас есть фокус.Это обычно проблема, с которой сталкиваются люди, и она есть в документах, но не сразу ясно.Если вы посмотрите здесь ссылку на живой документ и выполните поиск setFocus () - вы заметите, что она есть в каждом из их примеров (кроме top, который не работает!) - но они никогда не упоминают об этомв реальной документации на странице.
http://livedocs.adobe.com/flex/3/html/help.html?content=events_11.html
Так что, даже в их первом примере, если вы нажмете на приложение (а не на текстовое поле), оно не будет работать!
<?xml version="1.0"?>
<!-- events/TrapAllKeys.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();">
<mx:Script><![CDATA[
private function initApp():void {
application.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
}
private function keyHandler(event:KeyboardEvent):void {
t1.text = event.keyCode + "/" + event.charCode;
}
]]></mx:Script>
<mx:TextInput id="myTextInput"/>
<mx:Text id="t1"/>
</mx:Application>
Если, однако, вы сами установите фокус, изменив функцию инициализации следующим образом, это будет!
private function initApp():void {
application.addEventListener(KeyboardEvent.KEY_UP, keyHandler);
myTextInput.setFocus();
}
Еще один прием для проверки, если это ваша проблема, - добавить текстовое поле в видедочерний элемент контейнера, который захватывает, если они волшебным образом работают после того, как вы щелкнете в этом текстовом поле - это действительно проблема фокуса!
=)