2013-03-19 2 views
2

У меня есть WindowedApplication, мне нужно следить за keyUp, чтобы я мог закрыть приложение на нажатой клавише управления. Тем не менее, мой код не работает:Spark WindowedApplication, monitor keyUp event

<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

+0

@ethrbunny: Нет, но я на самом деле просто решил и собираюсь опубликовать решение. – Drahcir

+0

ответ отправлен сейчас – Drahcir

ответ

1

Я нашел this similar question на форумах Adobe, это помогло решить проблему.

Я решил прослушать 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>