Не догоняющий событие key up - PullRequest
0 голосов
/ 21 марта 2012

У меня есть флэш-компонент TextInput в мувиклипе, добавленный на сцену через as3. В тот момент, когда этот mc добавляется на сцену, он назначает событие клавиатуры (события нажатия клавиш и нажатия клавиши) основной стадии (стадии основного приложения) и устанавливает фокус основной стадии на основной стадии.

Пока все хорошо.

Проблема в том, что когда я набираю клавишу ВВОД, я ловлю KEY_DOWN, но когда я отпускаю клавишу ENTER, мое событие KEY_UP не отслеживается моей функцией, назначенной этому событию.

Кто-нибудь знает, почему?

Работает только при нажатии на флеш-плеер.


(код предоставлен в комментарии)

private function initAdded(e:Event){ 
    _main.stage.addEventListener(KeyboardEvent.KEY_DOWN,checkKeysDown); 
    _main.stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp); 
    MovieClip(_main).setStageFocus() 
} 

private function checkKeysDown(e:KeyboardEvent):void { 
    if (e.keyCode == 13) { 
        trace('enter down') 
    } 
} 

private function checkKeysUp(e:KeyboardEvent):void { 
    if(e.keyCode == 13){ 
        trace('enter up') 
    } 
}

1 Ответ

0 голосов
/ 21 марта 2012

Я собираюсь предположить, что событие KEY_UP обрабатывается текстовой областью, в которую вы печатаете, и оно не хочет делиться, поэтому оно убивает событие.Попробуйте:

_main.stage.addEventListener(KeyboardEvent.KEY_UP,checkKeysUp, true);

Это заставит ваш прослушиватель событий перехватить событие в фазе захвата, прежде чем другой прослушиватель событий отменит распространение события.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...