![]() |
Animation mit TImage!
Hallo,
ich hoffe Ihr könnt mir weiterhelfen: Ich möchte gerne einen Tamagotchi für meine Freundin programmieren, da es interesannter ist wenn sich das Tamagotchi wie im echten leben halt bewegt komm ich auch zu meiner ersten Frage wie kann ich eine Animation OHNE DelphiX oder DirectX oder OpenGL oder oder oder erstellen ich möchte keinen Schnickschnack mit einbinden sonder nur mit den Standartkomponennten von Delphi 6 dieses Problem lösen nur fehlt mir im momment noch das nötige Wissen dazu bin absoluter Delphi Beginner. Nunja vielleicht könnt ihr mir weiterhelfen bislang hab ich es so versucht:
Delphi-Quellcode:
Das dumme ist ja das so auch gleichzeitig eine ENDLOSschleife realisiert wurde was wieder nicht meinen Wünschen entsprach. Ich würde gerne diese Animation von den drei Bilder im Hintergrund laufen lassen. procedure TForm1.FormCreate(Sender: TObject); var temp: integer; begin for temp:=0 to 3 then Image1.Picture.LoadFromFile('pics/1_'+FloatToStr(temp)+'.bmp'); end; Was noch ein Problem ist wie ich es hinkriegen soll das die FOR Schleife nachdem er auf 3 gezählt hat nochmal von vorn beginnen soll mit GOTO könnte das klappen nur soll man ja nicht umbedingt auf diesen Befehl zurückgreifen so kenn ich das aufjedenfall auf C++ und C Zeiten :) |
wenn temp nen integer ist, wieso nimmst du dann nicht 'IntToStr'?
wenn du einfach
Delphi-Quellcode:
vor das end schreibst, dann sollte es wieder von vorne los gehen
if temp = 3 then temp:= 0
haettest aber wieder ne endlos-schleife Mat |
Hallo also es gibt zwei arten wie du eine Animation in dein Programm ein bauen kannst mit
![]() |
meinen tip kannst du getrost vergessen, das klappt so nicht under delphi... :(
wenn er nach 3 wieder bei 0 anfangen soll, muesstest du noch ne schleife 'drumrum bauen'.
Delphi-Quellcode:
while 1 = 1 do
begin for temp:=0 to 3 Do begin .. end; end; Mat |
Zitat:
Zitat:
Delphi-Quellcode:
Nur wie gesagt ich will auch den Intervall vielleicht etwas drosselt weil der FOR Zähler ist so schnell habs mal getestet und die Zahl die grad "temp" ist in die Caption der Titelleiste gelegt oh meine Güte geht das schnell und so schnell wie sieht das den aus, und was ist das für eine Animation mit über 24 Bilder die ein Mensch als FLÜSSIG bezeichnen kann meine liegt min. bei 90-gar500 Bildern :(
procedure TForm1.FormCreate(Sender: TObject);
var temp: integer; begin for temp:=1 to 3 do begin Image1.Picture.LoadFromFile('pics/1_'+FloatToStr(temp)+'.bmp'); end; if temp = 3 then temp:= 0; end; |
Zitat:
Danke nochmals Mat und City Light für die Einträge. |
THEMA CLOSEN :)
So ich habs doch noch hingekriegt :)
Hier der Code nochmals danke für eure Hilfe :)
Delphi-Quellcode:
var
Form1: TForm1; Image1: TImage; temp: Integer; implementation {$R *.dfm} procedure TForm1.Timer1Timer(Sender: TObject); begin if temp = 1 then begin Image1.Picture.LoadFromFile('pics/1_'+IntToStr(temp)+'.bmp'); Form1.Caption:=IntToStr(temp); temp:= 2; end else if temp = 2 then begin Image1.Picture.LoadFromFile('pics/1_'+IntToStr(temp)+'.bmp'); Form1.Caption:=IntToStr(temp); temp:= 3; end else if temp = 3 then begin Image1.Picture.LoadFromFile('pics/1_'+IntToStr(temp)+'.bmp'); Form1.Caption:=IntToStr(temp); temp:= 1; end; end; procedure TForm1.FormCreate(Sender: TObject); begin temp:= 1; end; end. |
hehe.. auf die idee mit nem timer bin ich auf grad gekommen :)
allerdings ist mein timer kuerzer :)
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin Image1.Picture.LoadFromFile('Image'+IntToStr(temp)+'.bmp'); temp := temp + 1; if temp = 4 then temp := 0 end; Mat |
Moin Zusammen,
und je nachdem, wie lang das Timer Interval eingestellt ist wäre es sinnvoll zu Beginn der OnTimer Routine den Timer ab- (enabled := false), und am Ende wieder einzuschalten, ansonsten kann es passieren, dass OnTimer erneut aufgerufen wird, wärend noch das Bild vom vorherigen Aufruf geladen wird. LoadFromFile kann ja dauern (je nach Bildgrösse) Dabei fällt mir ein: Man könnte die Bilder, falls sie denn nicht zu gross sind, auch als Resource mit in das Programm einbinden. Das spart dann zusätzliche externe Dateien. |
Zitat:
Delphi-Quellcode:
PS: Aber nun kommt ein neues Problem drauf zu hehe sorry :) Also wie krieg ich es hin das das Bild nicht FLAKERT ??? :freak: procedure TForm1.Timer1Timer(Sender: TObject); begin Image1.Picture.LoadFromFile('pics/1_'+IntToStr(temp)+'.bmp'); inc(temp); if temp = 4 then temp := 1; end; procedure TForm1.FormCreate(Sender: TObject); begin temp:= 1; end; Man muß doch die Images davor irgendwie precatchen sprich zwischenspeichern können ... hab mal was von Blitblt oder so ähnlich gelesen hab aber noch null Ahnung wie das geht :) :coder: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:04 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