Пятница, 29 Ноября 2024, 03:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Работа с клавиатурой
HaGeДата: Четверг, 03 Июля 2014, 13:32 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
на данный момент пишу что-то вроде движка для своей игры. работаю в lazarus, использую модули GL и GLUT. ввод через клавиатуру осуществляю при помощи регистратора (вроде эта штуковина так называется) glutKeyboardFunc. если это важно, вот полный код процедуры:

Код
if key=226 then begin
   _obj[0].Move(10,0);
end;

if key=244 then begin
   _obj[0].Move(-10,0);
end;


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

как можно осуществить, так сказать, плавный ввод с клавиатуры? находил в интернете какие-то специальные модули, но они, видать, по сроку давности уже некорректно работают в lazarus, а переписать их самостоятельно опыта не хватает.
daunДата: Четверг, 03 Июля 2014, 16:38 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Примерно принцип такой:
Код

var k:array[0..255]of boolean;
//.................................................
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
         k[key]:=true;
end;

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
         k[key]:=false;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
         if k[32] then begin ... end;
end;
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг