2013-03-19 18 views
2

我有一個WindowedApplication,我需要監視一個keyUp,以便我可以關閉按下的轉義鍵上的應用程序。然而,我的代碼是不工作:Spark WindowedApplication,監視器keyUp事件

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         keyUp="windowedapplication1_keyUpHandler(event)"> 

<fx:Script> 
     <![CDATA[ 

      protected function windowedapplication1_keyUpHandler(event:KeyboardEvent):void 
      { 
       //Monitor key press {ESC} 
       if(event.keyCode == 27){ 
        exit(); 
       } 
       else{ 
        trace("key = " + event.keyCode); 
       } 
      } 

     ]]> 
</fx:Script> 

看來,這個事件不點火可言,我甚至試圖重寫keyUpHandler並描繪出一些信息,但一無所獲。

+0

您是否收到任何鍵盤事件? – ethrbunny 2013-03-19 13:06:01

+0

@ethrbunny:不,但我剛剛解決並準備發佈解決方案。 – Drahcir 2013-03-19 13:06:40

+0

解答已答覆 – Drahcir 2013-03-19 13:11:34

回答

1

我在Adobe論壇上找到了this similar question,它幫助解決了這個問題。

我解決了通過收聽applicationComplete,然後在處理程序附加keyUp聽衆stage

<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         applicationComplete="init()"> 

<fx:Script> 
     <![CDATA[ 

      protected function init():void 
      { 
       stage.addEventListener(KeyboardEvent.KEY_UP, windowedapplication1_keyUpHandler); 
      } 

      protected function windowedapplication1_keyUpHandler(event:KeyboardEvent):void 
      { 
       //Monitor key press {ESC} 
       if(event.keyCode == 27){ 
        exit(); 
       } 
       else{ 
        trace("key = " + event.keyCode); 
       } 
      }  

     ]]> 
</fx:Script>