[Delphi] Szybkie przechwytywanie eventów klawiatury


(Bartekviper) #1

Witam,

mam problem taki, że przechwytuje eventy klawiatury w taki sposób:

procedure TGame.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

  if((Key=VK_LEFT) AND (Self.MenuPause.Checked=False)) then Bar.moveLeft(SHIFT_PX);

  if((Key=VK_RIGHT) AND (Self.MenuPause.Checked=False)) then Bar.moveRight(SHIFT_PX);

end;

A jako, że piszę grę typu arkanoid to muszę szybko przechwytywać eventy klawiatury. Problem mój z tą metodą polega na tym, że jeżeli przesuwam w lewo i nagle chce zmienić kierunek to niestety muszę kliknąć kliknąć kilka razy, żeby się to stało i mogę znów trzymać wciśnięty klawisz. Chciałbym, żeby bez przechwytywania myszy (tylko sterowanie belką za pomocą klawiatury) zrobić szybką zmianę kierunku. Dodam od razu, że kod ten jest bezpośrednio w formularzu (jej poruszanie jest w głównym wątku formularza). Belka jest obiektem TImage i korzystająć z "obiektowości" dodałem metody moveLeft(shift : Byte) oraz moveRight(shift : Byte), które działają tak, że przypisują belce nowe położenie tak:

Self.Left := Self.Left + shift;

//lub

Self.Left := Self.Left - shift;

W zależności od kierunku. Za pomoc z góry dzięki.