![]() |
Automatisches hin und her hüpfen mit hilfe eines timers
Und zwar hab ich mal zu Versuchszwecken versucht ein Programm zu schreiben, dass ein Label automatisch nach links und rechts hüpfen lässt(bin immer noch Anfänger in Delphi :( ).
jetzt sieht mein Quelltext im OnTimer-Event folgendermaßen aus:
Delphi-Quellcode:
Bewegung und Entfernung sind Variabeln vom Typ integer. Entfernung hat im OnCreat des Forms den gleichen Wert bekommen, wie Label1.Left ist. Bewegung startet mit 1.
procedure TForm1.Timer1Timer(Sender: TObject);
begin Bewegung := Bewegung + 1; // Wert von Bewegung erhöht sich sekündlich um 1 if Bewegung = 5 then begin if Label1.Left = Entfernung then Label1.Left := Entfernung + 100; // Soll nur einmal vorkommen end; if Bewegung = 5 then begin if Label1.Left = Entfernung + 100 then Label1.left := Entfernung - 100 // nach der ersten Bewegung soll Label1 in die andere Richtung end; if Bewegung = 5 then begin if Label1.Left = Entfernung - 100 then Label1.Left := Entfernung + 100; // nach der zweiten Bewegung wieder in die andere Richtung. Dann tritt das zweite wieder ein. end; if Bewegung = 5 then Bewegung := 1; // Bewegung wird auf 1 zurückgesetzt, eine Endlos schleife soll entstehen end; Wenn ich das Programm jetzt laufen lasse, hüpft das Label einmal nach rechts und bleibt dort. Was hab ich falsch gemacht? |
Re: Automatisches hin und her hüpfen mit hilfe eines timers
Hallo malo,
alle Programmteile werden bei dir bei Bewegung=5 ausgeführt, deshalb können sie allen in einen Block:
Delphi-Quellcode:
Also bei Bewegung = 5 wird ja Label.Left auf Entfernung +100 gesetzt, aber in der nächsten if-Abfrage wieder zurück! Du siehst also gar nichts.
if Bewegung = 5 then
begin ... end; |
Re: Automatisches hin und her hüpfen mit hilfe eines timers
Mh... das heißt also im Grunde, dass Label1.Left gleichzeitig +100 und -100 wird? So ungefähr? ^^
Nun gut, dürfte ja nicht sooo schwer sein, dass zu ändern... danke :) |
Re: Automatisches hin und her hüpfen mit hilfe eines timers
Hallo Malo,
ja, so ist es. Soll das Label nach 5 Sekunden nach rechts hüpfen, nach 10 Sekunden zurück, nach 15 wieder nach rechts usw.? |
Re: Automatisches hin und her hüpfen mit hilfe eines timers
Hai malo,
wenn ich es richtig verstehe möchtest Du das Label abwechselnd rechts und links anzeigen lassen oder? Dann könntest Du es doch so machen:
Delphi-Quellcode:
var
leftpos, rightpos : Integer; procedure TForm1.Button1Click(Sender: TObject); begin leftpos := 100; // Linkepostion des Labels rightpos := 400; // Rechteposition des Labels Timer1.Interval := 1000; // einmal pro Sekunden hüpfen Timer1.Enabled := True; // Timer starten end; procedure TForm1.Timer1Timer(Sender: TObject); begin if Label1.Left = leftpos then // Wenn es links ist begin Label1.Left := rightpos; // dann nach rechts setzen end else begin Label1.Left := leftpos // sonst wieder nach links end; end; |
Re: Automatisches hin und her hüpfen mit hilfe eines timers
Hm... das ist sogar eine noch einfachere Variante ^^
Aber egal, ich hab das jetzt schon mit meinem Quelltext gemacht, nur etwas verändert... aber merken werd ich's mir auf jeden fall :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz