AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Animation mit TImage!
Thema durchsuchen
Ansicht
Themen-Optionen

Animation mit TImage!

Ein Thema von Ag3nt · begonnen am 5. Jun 2003 · letzter Beitrag vom 12. Jun 2003
Antwort Antwort
Seite 1 von 3  1 23      
Ag3nt

Registriert seit: 3. Jun 2003
28 Beiträge
 
#1

Animation mit TImage!

  Alt 5. Jun 2003, 23:52
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
Gruß, Ag3nt
  Mit Zitat antworten Zitat
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#2
  Alt 5. Jun 2003, 23:58
wenn temp nen integer ist, wieso nimmst du dann nicht 'IntToStr'?

wenn du einfach
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
  Mit Zitat antworten Zitat
Benutzerbild von City Light
City Light

Registriert seit: 17. Sep 2002
314 Beiträge
 
#3
  Alt 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
Bis bald man liest sich
Tino
  Mit Zitat antworten Zitat
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#4
  Alt 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
  Mit Zitat antworten Zitat
Ag3nt

Registriert seit: 3. Jun 2003
28 Beiträge
 
#5
  Alt 6. Jun 2003, 00:08
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 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
Gruß, Ag3nt
  Mit Zitat antworten Zitat
Ag3nt

Registriert seit: 3. Jun 2003
28 Beiträge
 
#6
  Alt 6. Jun 2003, 00:11
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





Danke nochmals Mat und City Light für die Einträge.
Gruß, Ag3nt
  Mit Zitat antworten Zitat
Ag3nt

Registriert seit: 3. Jun 2003
28 Beiträge
 
#7

THEMA CLOSEN :)

  Alt 6. Jun 2003, 00:33
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.
Gruß, Ag3nt
  Mit Zitat antworten Zitat
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#8
  Alt 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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9
  Alt 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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Ag3nt

Registriert seit: 3. Jun 2003
28 Beiträge
 
#10
  Alt 6. Jun 2003, 00:51
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

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 ???

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
Gruß, Ag3nt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 Uhr.
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