すべてのキーボードイベントを取る方法

Flex2でのキーボードイベントは、ActionScript2.0の頃のように、キーイベントをすべて取るのが少し難しくなっています。
すべてのキーボードイベントを取るには、stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp) を登録するのですが、
MXMLプロジェクトでは、の initialize イベントの時、
stage が null になっているため、アプリが起動した直後からイベントを取ることができません。
ActionScriptプロジェクトでは、コンストラクタでstageが正しく設定されています。)

そこで、click イベントなどで取ると良いです。ゲームを作る時は、一度、画面をクリックさせるなどの工夫が必要かも
しれませんね。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute"
    click="onClick()"
    >
    <mx:TextInput x="20" y="10" id="a_txt"/>
    <mx:Script><![CDATA[
        import mx.core.UIComponent;
         private function onClick():void {
             a_txt.text = "ready";
             stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
         }
         private function onKeyUp(event:KeyboardEvent):void {
             a_txt.text = "code = " + event.keyCode;
         }
    ]]></mx:Script>
</mx:Application>

あと、Flex2のマニュアルに載っている方法では、適当なを作り、
そこにフォーカスを移動させておくという方法が紹介されています。
確かに、この方法なら、creationCompleteイベントでフォーカスを指定できます。

先日、教えてもらった stageを参照できるすばらしい方法です。

 <?xml version="1.0" encoding="utf-8"?>
 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
 layout="absolute">
      creationComplete="completeHandler()">
      <mx:Script>
          <![CDATA[
              private function completeHandler():void
              {
                  callLater(initializeHandler);
              }
 
              private function initializeHandler():void
              {
                  trace(stage); // is not null
              }
          ]]>
      </mx:Script>
 </mx:Application>

参考)中国語ですが、以下のサイトが役に立ちました。
http://www.nshen.net/blog/article.asp?id=496
最近、flex2のページ探していると、中国のページが多くヒットします。
※幸いにも、英語以上に中国語が読めるので、没問題ですが。