Wątek ciągły

0

Witam. Mam taki problem.

Chciałbym, aby po wciśnięciu jakiegoś klawisza komponent się przesuwał, ale ruchem jednostajnym.
Zrobiłem tak:

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Shape1.Top := Shape1.Top + 1;
end;

Ale gdy wcisnę i trzymam klawisz, to między pierwszym, a drugim znakiem jest przerwa.
Próbowałem to zrobić w nowym wątku, ale aplikacja się zawieszała.

W jaki sposób to rozwiązać?
Chodzi dokładnie o to, żeby kierować kwadratem (góra, dół, prawo, lewo).

1

t : single;

na poczatku ruchu na samym poczatku jak zaczynamu prouszac komponentem

t:=GetTickCount();

w jakims tam timerze lub czyms co bedzie przesuwalo komponent

komponent.top = komponent.top + Trunc( ((GetTickCount()-t) / 1000.0 )*stala_przesuniecia);

bo zawsze w takich przypadkach trzeba uzywac czasu

1 użytkowników online, w tym zalogowanych: 0, gości: 1