2013-03-19 22 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>