Entwickler-Ecke

Sonstiges (FPC / Lazarus) / Linux API - Image bewegen


Caro:3 - Di 09.03.21 19:52
Titel: Image bewegen
Hey,
in Informatik sollen wir als Facharbeit ein Spiel programmiere. Ich hab mir ein Jump 'n Run ähnliches Spiel ausgesucht. Allerdings scheitert es schon am grundlegende: der Bewegung!:( Ich hab schon mehrere Einzel-Codes mit denen ich ein Shape dazu bringe sich durch das drücken der 'D'- bzw. der 'A'-Taste nach links oder rechts zu bewegen. Diese Codes lassen sich allerdings nicht in mein schon bestehendes größeres Programm einfügen und bis jetzt habe ich es auch noch nicht geschafft das ganze auf ein Image zu übertragen.
Hat jemand Tipps, damit es funktioniert?
LG Caro :3
PS: Ich programmiere in Lazarus :)


Th69 - Mi 10.03.21 10:14

Hallo und :welcome:,

woran scheitert es denn genau, an dem Abfragen der Tasten oder dem Ändern der Position eines Images?

Bei ersterem mußt du ein OnKeyDown [https://wiki.lazarus.freepascal.org/key_down] (oder OnKeyPress [https://wiki.lazarus.freepascal.org/OnKeyPress])-Ereignis der Form erstellen, d.h. die Ereignisprozedur erstellen und dann dem Ereignis, im Konstruktor bzw. über den Designer, zuweisen:

Delphi-Quelltext
1:
OnKeyDown := @FormKeyDown;                    

Letzeres geht einfach über die Änderung der Eigenschaften Left und Top

Delphi-Quelltext
1:
2:
3:
image.Left := image.Left + 1;
{bzw.}
image.Top := image.Top + 1;


Caro:3 - Mi 10.03.21 10:18

Hey,
Vielen Dank für deine Antwort:D
Ich hab es gestern Abend noch hinbekommen: Das Problem war, dass der Button angewählt war und somit das Image nicht angesprochen wurde...ich wusste gar nicht, dass das geht...
Trotzdem vielen Danke🥰


jaenicke - Mi 10.03.21 11:26

Hat Lazarus am Formular vielleicht auch eine Eigenschaft KeyPreview? Damit bekommst du die Events auch, wenn ein Button gerade den Eingabefokus (so heißt das) hat.