![]() |
Bild kreisen lassen
Hi,
ich möchte mit einem Timer ein Bild kreisen lassen, dass es ,wenn es z.B. left= 200 erreicht hat, stopt und sich dann nach unten bewegt usw. . Wie funktioniert dies genau? Ich habe schon versucht, dass es bei left=200 stopt, aber es funktionierte nicht: (ich habe einen button, einen timer und ein bild) procedure TForm1.Button1Click(Sender: TObject); begin if button1.caption='Lauf' then begin Timer1.Enabled:=true end else if image1.left=200 then begin Timer1.enabled:=false end end; procedure TForm1.Button2Click(Sender: TObject); begin if image1.left=40 then Timer1.enabled:=false; end; procedure TForm1.Timer1Timer(Sender: TObject); begin image1.left:=image1.left+10; Timer1.Interval:=1000; end; Ich bedanke mich schonmal im vorraus für eure Hilfe. gruß crusor. |
(PS: habe turbo delphi 2006, nutze aber auch delphi 7)
|
Re: Bild kreisen lassen
hallo und herzlichwillkommen in der dp !!! :dp:
da musst du auf mathe 5 klasse zugreifen und nen bissel mi pi arbeiten und rechnungen aufstellen!! |
Das Bild muss nicht unbedingt "kreisen", sondern soll sich nach rechts bewegeb, dann nach einer weile runter, dann nach links, dann nach oben und wieder nach rechts.
|
Re: Bild kreisen lassen
dann kannst du mit sowas hier arbeiten:
Delphi-Quellcode:
das würde immer einen pixel abziehen!!
image1.left := image1.left - 1;
das ganze kannst du dann noch kontrollieren mit einer if abfrage im timer wie zb so:
Delphi-Quellcode:
das geht natürlich mit allen richtungen!!
if image1.left <= 10 then
// so geht er nach links bis 10 pixel und dann kannst mit einer anderen richtung weiter machen begin end; |
Kann man auch das schreiben:
if image1.left => 10 then .... ? das bild soll sich ja nach rechts bewegen. gruß crusor |
ich hab jetzt:
procedure TForm1.Button1Click(Sender: TObject); begin if button1.caption='Lauf' then begin Timer1.enabled:=true; button1.Caption:='Lauf stop' end else if button1.caption='Lauf stop' then Timer1.enabled:=false; button1.caption:='Lauf' end; procedure TForm1.Timer1Timer(Sender: TObject); begin image1.left:=image1.Left+10; Timer1.Interval:=1000; if image1.Left >= 50 then begin image1.Top:=image1.top+10 end else if image1.Top=50 then begin image1.Left:=image1.left-10 end else if image1.left<= 50 then begin image1.top:=image1.top-10 end else if image1.Top = 0 then begin image1.left:=image1.left+10 end Das funktioniert leider nicht so wie es soll. Kann mir jemand sagen was der Grund ? danke im vorraus! gruß crusor |
Re: Bild kreisen lassen
hallo,
hab das problem soweit gelöst:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if (button1.caption='Lauf') then begin Timer1.enabled:=true; button1.Caption:='Lauf stop' end else if button1.caption='Lauf stop' then begin Timer1.enabled:=false;button1.caption:='Lauf' end end; procedure TForm1.Timer1Timer(Sender: TObject); begin image1.left:=image1.Left+10; Timer1.Interval:=400; if image1.left >= 50 then begin Timer2.enabled:=true; Timer1.enabled:=false end end; procedure TForm1.Timer2Timer(Sender: TObject); begin image1.top:=image1.Top+10; Timer2.Interval:=400; if image1.Top = 50 then begin Timer3.enabled:=true; Timer2.enabled:=false end end; procedure TForm1.Timer3Timer(Sender: TObject); begin image1.left:=image1.left-10; Timer3.Interval:=400; if image1.Left <= 0 then begin Timer3.enabled:=false; Timer4.Enabled:=true end end; procedure TForm1.Timer4Timer(Sender: TObject); begin image1.Top:=image1.Top-10; Timer3.Interval:=400; if image1.Top = 0 then begin Timer4.Enabled:=false; Timer1.Enabled:=true end end; Wenn ich aber irgendwo anhalte und dann weiterlaufen lasse, bewegt er sich nicht auf derselben stelle weiter. Kann mir da jemand bitte helfen? Ich danke für eure Hilfe schonmal im vorraus . |
Re: Bild kreisen lassen
das ist weil du mit dem button nur
Delphi-Quellcode:
aufrufst. demzufolge geht das image einen anderen weg
timer1.enabled:=true;
|
Re: Bild kreisen lassen
Nun hab ich:
Delphi-Quellcode:
Das funktioniert schon besser, aber noch nich perfekt.
procedure TForm1.Button1Click(Sender: TObject);
begin if button1.caption='Lauf' then begin Timer1.enabled:=true; button1.Caption:='Lauf stop' end else if (button1.caption='Lauf stop' )and (Timer1.enabled=true) then begin Timer1.enabled:=false;button1.caption:='Lauf' end else if (button1.caption='Lauf stop') and (Timer2.enabled=true) then begin Timer2.enabled:=false;button1.caption:='Lauf' end else if (button1.caption='Lauf stop') and (Timer3.enabled=true) then begin Timer3.enabled:=false;button1.caption:='Lauf' end else if (button1.caption='Lauf stop') and (Timer4.enabled=true) then begin Timer4.enabled:=false;button1.caption:='Lauf' end end; procedure TForm1.Timer1Timer(Sender: TObject); begin image1.left:=image1.Left+10; Timer1.Interval:=400; if image1.left >= 50 then begin Timer2.enabled:=true; Timer1.enabled:=false end end; procedure TForm1.Timer2Timer(Sender: TObject); begin image1.top:=image1.Top+10; Timer2.Interval:=400; if image1.Top = 50 then begin Timer3.enabled:=true; Timer2.enabled:=false end end; procedure TForm1.Timer3Timer(Sender: TObject); begin image1.left:=image1.left-10; Timer3.Interval:=400; if image1.Left <= 0 then begin Timer3.enabled:=false; Timer4.Enabled:=true end end; procedure TForm1.Timer4Timer(Sender: TObject); begin image1.Top:=image1.Top-10; Timer3.Interval:=400; if image1.Top = 0 then begin Timer4.Enabled:=false; Timer1.Enabled:=true end end; Könnt mir jemand sagen was noch fehlt, oder was falsch ist? danke schonmal |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 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