Обработка нескольких клавиш сразу
|
|
leonid | Дата: Суббота, 24.12.2011, 13:10 | Сообщение # 1 |
Новобранец
Группа: Пользователи
Сообщений: 4
Статус: Вышел
| Как сделать так, чтоб при одновременном зажатии двух клавиш выполнялось действие?
Вот так ничего вразумительного не получается:
if (keyPress=KE_KEY2) and (keyPress=KE_KEY4) then begin x:=x-2; y:=y-2; end;
Библиотеки нужны или это вообще никак сделать нельзя?
Сообщение отредактировал leonid - Суббота, 24.12.2011, 13:11 |
|
| |
PassCall | Дата: Понедельник, 26.12.2011, 18:54 | Сообщение # 2 |
Высший программист
Группа: Администраторы
Сообщений: 5
Статус: Вышел
| Есть такая библиотека. И даже достаточно простая в освоении =)
Назывется lib_ukey;
Пользоваться так: KeyStart;// включаем
GetKey(x);//получаем код нажатой клавиши. Аналог GetKeyPressed. Вместо x пишем номер нажатой клавиши. То есть могут быть зажаты 2 клавиши - 2 и 4, к примеру.
Тогда нужно писать примерно так if (GetKey(1)=KE_KEY2) or (GetKey(2)=KE_KEY2) then y:=y-1; if (GetKey(1)=KE_KEY4) or (GetKey(2)=KE_KEY4) then x:=x-1;
Еще можно определить число нажатых в данный момент клавиш - GetKeyNum.
и писать вот так for i:=1 to GetKeyNum do begin if GetKey(i)=KE_KEY2 then y:=y-1; if GetKey(i)=KE_KEY4 then x:=x-1; end;
Важно заметить, что при использовании этой либы стандартный GetKeyPressed работать перестает!
|
|
| |
leonid | Дата: Понедельник, 26.12.2011, 20:43 | Сообщение # 3 |
Новобранец
Группа: Пользователи
Сообщений: 4
Статус: Вышел
| Не могу найти никакого ukey'я. Только keys.
|
|
| |
PassCall | Дата: Вторник, 27.12.2011, 19:32 | Сообщение # 4 |
Высший программист
Группа: Администраторы
Сообщений: 5
Статус: Вышел
| Лови
|
|
| |