PDA

Просмотр полной версии : Как определить какая кнопка была отпущена?


Bорон
26.09.2007, 10:06
Доброго времени суток.
Есть персонаж.
Он двигается под управлением кнопок курсора.
нажатие кнопки определяет начало движения а отпускание - конец.

_root.keyListener = new Object();
_root.keyListener.onKeyUp = function() {
//остановились (очистив таймер) и смотрим в указаном направлении
}
_root.keyListener.onKeyDown = function() {
if(Key.isDown(Key.UP)){
//задали направление и по таймеру начали движение
}
if(Key.isDown(Key.LEFT)){
//задали направление и по таймеру начали движение
}
if(Key.isDown(Key.RIGHT)){
//задали направление и по таймеру начали движение
}
if(Key.isDown(Key.DOWN)){
//задали направление и по таймеру начали движение
}
}
Key.addListener(_root.keyListener);


Вопрос в том как определить какая кнопка была отпущена.
возможна такая ситуация:
1. нажали вверх
2. нажали вправо
3. отпустили вверх

при этом персонаж остановиться, хотя не должен этого делать.
посоветуйте, пожалуста, как обрабатывать такую ситуацию?

etc
26.09.2007, 10:23
Запоминать, сколько кнопок было нажато и при onKeyUp минусовать количество. Если остается ноль, обнулять интервалы.

Bорон
26.09.2007, 10:41
в принципе можно, спасибо.
еще вопрос тогда:
если я хочу что бы персонаж одновременно мог двигаться по горизонтали и вертикали если одновременно нажато вправо и вверх то как тогда обработать вышеописанную ситуацию. (тоесть то же самое но надо отлавливать пары влево-вправо и вверх-вниз)

подскажете?

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

Bорон
26.09.2007, 12:21
А можно как то вообще определить какая кнопка была отпущесна?
Или это не возможно принципиально?

DarkLight
26.09.2007, 18:02
Key.getCode() внутри onKeyUp возвращает код отпущенной клаиши.