Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Animation mit TImage! (https://www.delphipraxis.net/5437-animation-mit-timage.html)

Ag3nt 5. Jun 2003 23:52


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:
 

procedure TForm1.FormCreate(Sender: TObject);
var temp: integer;
begin
 
  for temp:=0 to 3 then
  Image1.Picture.LoadFromFile('pics/1_'+FloatToStr(temp)+'.bmp');
 
end;
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.
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 :)

Mat 5. Jun 2003 23:58

wenn temp nen integer ist, wieso nimmst du dann nicht 'IntToStr'?

wenn du einfach
Delphi-Quellcode:
if temp = 3 then temp:= 0
vor das end schreibst, dann sollte es wieder von vorne los gehen

haettest aber wieder ne endlos-schleife


Mat

City Light 5. Jun 2003 23:59

Hallo also es gibt zwei arten wie du eine Animation in dein Programm ein bauen kannst mit Bitmaps oder GIF Bilder ,für gif Animationen brauchst du eine Komponete. Such mal hier im Forum ein bisschen da nach ...denn das Thema hatten wir glaub ich schon zu genüge

Mat 6. Jun 2003 00:06

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

Ag3nt 6. Jun 2003 00:08

Zitat:

Zitat von City Light
Hallo also es gibt zwei arten wie du eine Animation in dein Programm ein bauen kannst mit Bitmaps oder GIF Bilder ,für gif Animationen brauchst du eine Komponete. Such mal hier im Forum ein bisschen da nach ...denn das Thema hatten wir glaub ich schon zu genüge

Jo stimmt aber ich wollte kein GIF nutzen :)

Zitat:

Zitat von Mat
wenn temp nen integer ist, wieso nimmst du dann nicht 'IntToStr'?

wenn du einfach
Source:

if temp = 3 then temp:= 0



vor das end schreibst, dann sollte es wieder von vorne los gehen

haettest aber wieder ne endlos-schleife
Mat

Also die Idee kam mir auch schon aber das Hauptproblem wie du sehen kannst ist diese "doofe" Schleife aus der man einfach nicht rauskommt. Bin grad so am Testen hab folgendes gewerkelt bislang:

Delphi-Quellcode:
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;
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 :(

Ag3nt 6. Jun 2003 00:11

Zitat:

Zitat von Mat
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

Leider lößt auch diese Schleife nicht das Problem :( Theoretisch kannste da auch ne While und danach ne Repeat und until 0 = 3 usw schreiben aber bringt nichts :) :firejump:





Danke nochmals Mat und City Light für die Einträge.

Ag3nt 6. Jun 2003 00:33

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.

Mat 6. Jun 2003 00:35

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

Christian Seehase 6. Jun 2003 00:41

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.

Ag3nt 6. Jun 2003 00:51

Zitat:

Zitat von Mat
hehe.. auf die idee mit nem timer bin ich auf grad gekommen :)

Hehe habs auch kürzer geschrieben mitlerweile wäre ja unsinnig viel Quellcode :) Thanks nochmals :) :hello:

Delphi-Quellcode:
       
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;
PS: Aber nun kommt ein neues Problem drauf zu hehe sorry :) Also wie krieg ich es hin das das Bild nicht FLAKERT ??? :freak:

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 01:16 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz