Обнаружение события клавиатуры alt keyDown во Flex - PullRequest
1 голос
/ 09 ноября 2009

Я пытаюсь определить событие нажатия клавиши для клавиши alt в flex. У меня есть стандартный прослушиватель событий для KeyboardEvent.KEY_DOWN и KeyboardEvent.KEY_UP, но я не получаю никакого ответа для клавиши alt (или клавиши ctrl).

Я знаю, что могу определить, была ли нажата клавиша alt с помощью события мыши, но я хочу обновить курсор при нажатии клавиши alt, чтобы показать, что он будет выполнять действие, отличное от того, когда он не нажат.

Я использую Safari на Mac для разработки, поэтому дайте мне знать, если, возможно, это отдельная проблема.

Ответы [ 3 ]

0 голосов
/ 09 ноября 2009

Попробуйте это:

component.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler, true );
component.addEventListener( KeyboardEvent.KEY_UP, keyUpHandler, true );

protected function keyDownHandler( event:KeyboardEvent ):void
{
    states[ event.keyCode >>> 3 ] |= 1 << (event.keyCode & 7);
}

protected function keyUpHandler( event:KeyboardEvent ):void
{
    states[ event.keyCode >>> 3 ] &= ~(1 << (event.keyCode & 7));
}

и вы можете проверить, не нажата ли клавиша, вот так:

public function isKeyDown( keyCode:uint ):Boolean
{
    return ( states[ keyCode >>> 3 ] & (1 << (keyCode & 7)) ) != 0;
}
0 голосов
/ 11 ноября 2009

Как указал Стеф, в Safari, похоже, есть ошибка.

Это может быть исправлено с помощью JavaScript для передачи событий во Flash, хотя я не уверен, что JavaScript получит их, если фокус находится во флэш-ролике.

Вот несколько примеров того, как это сделать: Утилита javascript для actionScript keypress?

0 голосов
/ 09 ноября 2009

Передо мной нет среды Flex, но я не думаю, что клавиши-модификаторы (Shift, Control и Option в вашем случае) сигнализируют о событиях клавиатуры. Если я прав, вы все равно можете получить большую часть того, что хотите, протестировав состояние клавиш управления и клавиш alt на каждом MouseEvent и обновив состояние курсора соответствующим образом.

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

...