blikk info infothek forum galerie sitemap

Flüssige Steuerung eines Objekts über bestimmte Tasten

anfang zurueck weiter ende nach oben

Wir brauchen zu nächst bestimmte Ereignisse:

 

  • FormKeyDown
  • FormKeyUp
  • x OnTimer (x = Anzahl der Richtungen/Tasten)

 

Logisch gesehen müsst ihr folgendes konstruieren:

 

In FormKeyDown soll die jeweilige Taste einen Timer auslösen. Dieser Timer hat ein Intervall von 1 und soll die jeweilige Position des zu steuernden Objekts ändern.

 

Mit FormKeyUp soll nun der jeweilige Timer wieder gestoppt werden.

 

Beispiel

In dem folgenden Beispiel sieht man eine kleine Steuerung eines Objekts namens Schiff durch die vier Richtungstasten mit Hilfe von vier Timern(tup; tdown; tleft; tright):

 

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;

  Shift: TShiftState);                                     

begin                                                      

case Key of

vk_right: tright.enabled:=true;

vk_left:  tleft.enabled:=true;

vk_up:    tup.enabled:=true;

vk_down:  tdown.enabled:=true;

end;

end; //der Prozedur

 

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;

  Shift: TShiftState);

begin

case Key of

vk_right: tright.enabled:=false;

vk_left:  tleft.enabled:=false;

vk_up:    tup.enabled:=false;

vk_down:  tdown.enabled:=false;

end;

end; //der Prozedur

 

//Das gelb untermalte sind die virtuellen Tastencodes. Sie stehen

//für die Richtungstasten, der Tastatur.

//Weitere Tastaturcodes findet ihr rechts --------------------->

 

procedure TForm1.tupTimer(Sender: TObject);

begin

schiff.top:=schiff.top-2;

end; //der Prozedur

 

procedure TForm1.trightTimer(Sender: TObject);

begin

schiff.left:=schiff.left+4;

end; //der Prozedur

 

procedure TForm1.tleftTimer(Sender: TObject);

begin

schiff.left:=schiff.left-4;

end; //der Prozedur

 

procedure TForm1.tdownTimer(Sender: TObject);

begin

schiff.top:=schiff.top+2;

end; //der Prozedur

Warum der Umstand mit den Timern?

Ganz einfach:

Nur durch diesen Umweg wird gewährleistet, dass das Objekt sich auch absolut flüssig bewegt. Probiert es doch mal ohne Timer, dann werdet ihr sehn was da rauskommt.

 

Tip:

Timer sind eure besten Freunde ;-)  …zumindest wenn es um Programmieren von Spielen geht

 

von Artur Bullert

nach oben
punkt   seitenbereich schließen

 



Zurück


 

Virtuelle Tastaturcodes