Flex Keyboard.capslock всегда возвращает false в createComplete

Я пытаюсь уведомить пользователя на экране входа в систему, если CapsLock включен. В createComplete Keyboard.capslock всегда возвращает false. Есть ли обходной путь для этого? Вот что я пытаюсь:

protected function application1_creationCompleteHandler(event:FlexEvent):void
{
    callLater(setListener);
}

private function setListener():void
{   
    if (Keyboard.capsLock)
    {
        lblCapsLock.visible = true;
    }
    else
    {
        lblCapsLock.visible = false;
    }

    stage.addEventListener(KeyboardEvent.KEY_DOWN, application1_keyDownHandler);
}

protected function application1_keyDownHandler(event:KeyboardEvent):void
{
    if (event.keyCode == Keyboard.CAPS_LOCK)
    {
        if (Keyboard.capsLock)
        {
            lblCapsLock.visible = true;
        }
        else
        {
            lblCapsLock.visible = false;
        }
    }
}

В системе управления ошибками и проблемами Adobe сообщается об ошибке: http://bugs.adobe.com/jira/browse/FP-2033

Интересно, почему он находится в состоянии Cannot Reproduce?


person Jarno Lahtinen    schedule 13.07.2011    source источник
comment
Я проверял, вроде нормально. Довольно странно... Кстати, просто совет по оптимизации вашего кода: lblCapsLock.visible = Keyboard.capsLock.   -  person Timofei Davydik    schedule 13.07.2011
comment
Для меня это не работает. Если я нажму на этап до того, как будет отправлено завершение создания, метка будет отображаться, если включены заглавные буквы. Каким-то образом мне нужно установить фокус на Application, тогда Keyboard.capsLock имеет значение true.   -  person Jarno Lahtinen    schedule 13.07.2011
comment
@ J.Lantinen, я думаю, что приложению действительно нужен фокус ОС, чтобы получить доступ к клавиатуре. Это действительно проблема? Не могли бы вы добавить прослушиватель событий для focusIn вместо createComplete? Или оба?   -  person J_A_X    schedule 13.07.2011
comment
Добавлен прослушиватель focusIn, тогда работает лучше. Спасибо за подсказку J_A_X.   -  person Jarno Lahtinen    schedule 15.07.2011


Ответы (1)


Старая тема, но это может кому-то помочь ... найдено, что с wmode, установленным на прозрачность, значение keyboard.capsLock всегда равно false. Или это может быть только специфично для swfoobject.

person CharlieA    schedule 13.01.2012