Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отловить ctrl+enter, shift+enter (http://www.flasher.ru/forum/showthread.php?t=202846)

vasya87 15.08.2013 01:04

Отловить ctrl+enter, shift+enter
 
Казалось бы, простейшая задача, проверяю в событии event.ctrlKey && event.keyCode == Keyboard.ENTER, а не тут то было. При зажатом контроле или шифте код Энтера (13) в событии тупо не приходит - только 16 и 17.
Пожалуйста, помогите найти выход.

Dukobpa3 15.08.2013 01:50

По KEY_DOWN - добавлять зажатые клавиши в массив текущих активных. По KEY_UP - убирать соответствующие из массива.
Ну и проверки по массиву делать что зажато.

vasya87 15.08.2013 10:44

не понял, как это поможет. при зажатом контроле флеш почему-то не ловит нажатие Энтера, ни при KEY_DOWN, ни при KEY_UP

Tails 15.08.2013 10:56

vasya87,
http://help.adobe.com/ru_RU/FlashPla...ir=2.6#ctrlKey

Dukobpa3 15.08.2013 11:55

Цитата:

не понял, как это поможет
Слегка провтыкал условие задачи. Тогда не знаю, никогда не сталкивался. Обычно проблем с этим не было. Пользовался ctrlKey, для таких случаев. И возможно там нужно сделать какую-то настройку обработки клавиатуры, чтоб она умела принимать несколько клавиш.

Добавлено через 15 минут
Интересно девки пляшут. Собрал минимальный пример отсюда. С нажатыми контрол и шифт следующая картина получается.
Левый контрол почему-то блокирует ввод. Т.е. ентер после него только кей_ап работает. Правый контрол через раз.
С шифтами проблем нет. Если контрол+шифт+клавиша - тоже проблем никаких.

Добавлено через 29 минут
Проблема замечена только с ентером. С любой другой клавишей всё работает как и должно. Как минимальное костыльное решение - просто отказаться от ентера и заменить его в своих сочетаниях клавиш на что-то другое:)

ZicoRio 16.08.2013 14:00

С ентером не пробовал, но вот так у меня все работает.
Может поможет разобраться.

Код AS3:

 
private function kUP(e:KeyboardEvent):void{
        if (e.keyCode==17) {
                CtrlPrd=0;
        }
}
private function kDOWN(e:KeyboardEvent):void{
        if (e.keyCode==17){
                CtrlPrd=1;
                return;
        }
        if (e.keyCode==enycode){
                if (CtrlPrd>0){
                        ........
                }
        }
}



Часовой пояс GMT +4, время: 20:46.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.