PDA

Просмотр полной версии : проблема с перехватом клавиш


Chas
03.11.2007, 01:21
вот такой вот тестовый код:

isCtrl=false;
Key.addListener(this);

function onKeyDown (){
code = Key.getCode();
if (code==Key.CONTROL && !isCtrl) {
isCtrl=true; trace ("ctrl pressed");
}
if (code>=48 && code<=57 && isCtrl){
trace ("ctrl+"+(code-48)+" pressed");
}
}

function onKeyUp (){
if (!Key.isDown(Key.CONTROL)) {
isCtrl=false;
trace ("ctrl released");
}
}


запускаем Test movie. не забываем отключить в плеере Contol->Disable keyboard shortcuts.

быстро нажимаем Ctrl+1. видим трейс

ctrl pressed
ctrl+1 pressed
ctrl released


зажимаем ctrl. ждем секунду. нажимаем 1. видим трейс

ctrl pressed
ctrl+1 pressed

ёпт. а куда событие onKeyUp исчезло?? как это лечить?? у меня на зажатый ctrl выполняется одно дейсвие (подсветка), а на ctrl+1 - другое. получается действие на ctrl+1 срабатыает, а подсветка, влючившаяся на ctrl остается включеной. :(

terbooter
03.11.2007, 10:26
Если нажато несколько клавиш, то событие onKeyUp срабатывает только при отпускании последней нажатой.
Остальные клавиши (оставшиеся нажатыми) не генерят вообще никакого события

Вижу единственный способ - это постоянно проверять статус нужной клавиши

function onEnterFrame (){
if (!Key.isDown(Key.CONTROL)) {
isCtrl=false;
trace ("ctrl released");
}
}

Chas
03.11.2007, 13:33
засада. спасибо за помощь