![]() |
Mit Timer images verschieben
Hallo mal wieder. Bei der entwicklung meines Jump and nthing else games bin ich beim Jumpen auf ein problem gestossen.
Delphi-Quellcode:
die Bewegung endet, wo sie soll, was für mich heisst, des ding hört auf zu arbeiten wo es soll. Aber der Timer is weiterhin an. des stört mich n bissl, denn im spiel sollte man mehrmals springen^^. weiss jemand ne Lösung?
var hoch : integer; //bei formcreate als 10 definiert
procedure TForm1.Timer2Timer(Sender: TObject); begin if hoch > -10 then begin hoch := hoch - 1; image2.Top := image2.Top - hoch; image3.Top := image3.Top - hoch; image4.Top := image4.Top - hoch; image6.Top := image6.Top - hoch; end else if hoch < -10 then begin hoch := hoch + 1; image2.Top := image2.Top - hoch; image3.Top := image3.Top - hoch; image4.Top := image4.Top - hoch; image6.Top := image6.Top - hoch; timer2.enabled := false; end ; end; procedure TForm1.Button1Click(Sender: TObject); begin if timer2.enabled = false then timer2.enabled := true; end; |
Re: Mit Timer images verschieben
Eigentlich bin ich immer der Meinung das man in einem Programm so wenig Timer verwendet wie möglich.
Dieser kann dann mehrere Aufgaben erledigen, zB. springen, laufen und noch den Hintergrund bewegen. Ein Image ist jetzt nicht so das Optimale für ein Game, aber für den Anfang ist es ok. ;) zu deinem Problem, schreibe dir zu jedem Sprite (also dem Image) einen eigenen Typ. Dieser Typ kann dan zB. eine Variable Springen enthalten. Ist der Wert in der Variablen = 0 ist kein Springen erforderlich ist der wert grosser kannst du im Timer abfragen wie hoch der Sprung sei muss. Ist der Wert wieder null muss nichts berechnet werden. ...hoffe mal das war verständlich :grübel: |
Re: Mit Timer images verschieben
Kann es sein, dass du einfach nur vergisst, hoch wieder auf 10 zu setzen?
Kannst du den Text wirklich so lesen? Begins und Ends, die zusammengehören, sollten auch untereinander stehen:
Delphi-Quellcode:
if hoch > -10 then
begin hoch := hoch - 1; image2.Top := image2.Top - hoch; image3.Top := image3.Top - hoch; image4.Top := image4.Top - hoch; image6.Top := image6.Top - hoch; end else if hoch < -10 then begin hoch := hoch + 1; image2.Top := image2.Top - hoch; image3.Top := image3.Top - hoch; image4.Top := image4.Top - hoch; image6.Top := image6.Top - hoch; timer2.enabled := false; end ; |
Re: Mit Timer images verschieben
ich kann des schon erkennen. und ich hab des schon probiert mit if hoch = 10 then . der wert hoch wird ja irgendwann wieder 10
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 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 by Thomas Breitkreuz