![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос насчет клавиш [Delphi, Windows]
Грей © (2004-05-09 18:47:00)Здравствуйте, у меня два вопроса.
Как сделать так, чтобы делфи обрабатывала нажатие нескольких клавиш (в том числе и символьных) одновременно?
И как сделать так, чтобы при прижатии клавиши таймеры не останавливались?
KilkennyCat (2004-05-10 20:51:00) [21]
> [5] Thor © (10.05.04 20:41)
ну.. не все ж игры в ДиректИкс делать-то...
Хотя, честно говоря, не понимаю, почему монстры останавливаются. Я от скуки леплю с обычным таймером - все ок.
Thor (2004-05-10 20:41:00) [22]
> KilkennyCat © (10.05.04 20:10) [4]
а оно нужно?
KilkennyCat (2004-05-10 20:10:00) [23]ну, можно ж и без таймера сделать... в цикле бесконечном, с application.processmessage... или отдельным потоком.
Thor (2004-05-10 18:28:00) [24]а таймер наверняка обыкновенный, стандартный?
если да, то не мудрено.
на нем игры лучше не делать вообще, а почитать про мултимедийные таймеры.
статьи были здесь на DelphiGFX и на delphikingdom.
Грей (2004-05-10 17:13:00) [25]Вот у меня через определенный промежуток времени монстры передвигаются по карте и летают снаряды. (это с помощью таймера).
Так вот. Если у меня прижать клавишу, допустим стрелка вверх, то монстры не двигаются и снаряды не летают.
Если хотите, я могу вам ссылку на мою игру дать - все увидите.
KilkennyCat (2004-05-09 21:28:00) [26]Используйте функцию GetKeyboardState(keystate : Tkeyboardstate);
Tkeyboardstate - это массив э-э... 0..256 of Byte, если не ошибаюсь. Грубо говоря - это матрица клавиатуры.
Можно обрабатывать так:
GetKeyboardState(kеystate);
if (kеystate[vk_Space] And 128) <> 0 then нажат пробел
if (kеystate[65] And 128) <> 0 then нажата А
что касается остановки таймера при нажатии... как Вы это сделали?