AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

einfache Animation

Ein Thema von Coloneo · begonnen am 20. Mär 2011 · letzter Beitrag vom 20. Mär 2011
Antwort Antwort
Coloneo

Registriert seit: 11. Dez 2010
3 Beiträge
 
#1

einfache Animation

  Alt 20. Mär 2011, 12:02
Hallo,

ich bin noch ein Delphi Frischling. Ich will eine einfache Animation aus Bildern mittels Timern verwirklichen. Mittels einer Eingabe vom Nutzer soll die Anzahl der Animationsdurchläufe bestimmt werden.
Dazu habe ich folgenden Quelltext geschrieben:
Delphi-Quellcode:
var
  Form1: TForm1;
  ende,Ziel,i,a: integer;
  implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Visible:=false;
Image2.Visible:=false;
Image3.Visible:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
Timer1.Enabled:=true;
Timer1.Interval:=100;
Ziel:=strtoint(Edit1.Text);
for a:=0 to Ziel do begin
Ende:=Ende+1;
if Ende=Ziel then begin
Timer1.Enabled:=false;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
begin
erg:=0;
i:=0;
inc(i);
case i of
1: begin
Image1.Visible := True;
Image2.Visible := False;
Image3.Visible := False;
end;
2: begin
Image1.Visible := False;
Image2.Visible := True;
Image3.Visible := False;
end;
3: begin
Image1.Visible := False;
Image2.Visible := False;
Image3.Visible := True;
i:=0;
end;
end;
end;
initialization
i := 0;
end.
Mein Problem ist das die Animation nicht wirklich anspringt: Das erste Bild wird sichtbar,und bleibt auch dauerhaft sichtbar ohne das die anderen Bildern anspringen. Irgendwas muss also falsch sein... .

Geändert von mkinzler (20. Mär 2011 um 12:07 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: einfache Animation

  Alt 20. Mär 2011, 12:07
Schau mal Du startest den Timer in Buttoncklick, nach durchlauf der Forschleife beendest Du den Timer. Ich fürchte, der hat gar keine Zeit was zumachen
Und Dein Timer setzt i immer wieder auf 0
Delphi-Quellcode:
var
  Form1: TForm1;
  ende,Ziel,i,a: integer;//<--Bitte keine globalen Variablen
  implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
   Image1.Visible:=false;
   Image2.Visible:=false;
   Image3.Visible:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i:integer;//<--Warum wenn Du i nicht benutzt
begin
   Timer1.Enabled:=true;//<--- Strart Timer
   Timer1.Interval:=100;
   Ziel:=strtoint(Edit1.Text);
   for a:=0 to Ziel do begin
   Ende:=Ende+1;
   if Ende=Ziel then
   begin
      Timer1.Enabled:=false;//---Stop Timer
   end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
   i: Integer;
begin
   erg:=0;
   i:=0;//<-- i wird bei jedem durchlauf 0
   inc(i);//ok
   case i of//<--- bleibt also immer 1
        1: begin
              Image1.Visible := True;
              Image2.Visible := False;
              Image3.Visible := False;
           end;
        2: begin
              Image1.Visible := False;
              Image2.Visible := True;
              Image3.Visible := False;
           end;
        3: begin
              Image1.Visible := False;
              Image2.Visible := False;
              Image3.Visible := True;
              i:=0;
           end;
     end;
end;

initialization
i := 0;
end.
alfold

Geändert von alfold (20. Mär 2011 um 12:28 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
Coloneo

Registriert seit: 11. Dez 2010
3 Beiträge
 
#3

AW: einfache Animation

  Alt 20. Mär 2011, 12:23
Hallo,
danke für die Antwort ,ich habe mittlerweile die for-Schleife entfernt um zu schauen ob die Animation auch so funktioniert und das tut sie immer nocht nicht, liegt vielleicht an der Initialisierung?
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: einfache Animation

  Alt 20. Mär 2011, 12:25
Ich habe noch mal editiert schau die kommentare.

alfold
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#5

AW: einfache Animation

  Alt 20. Mär 2011, 12:26
Ausserdem brauchst du einen Zähler für deine Bilder.
Diese Zählervariable sollte im Formular liegen:
Delphi-Quellcode:
TForm1 = class(TForm)
...
private
  FBildNr : integer;
...
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  // ein cooler Trick, wie man ohne "case" auskommt
  Image1.Visible := (FBildNr = 0);
  Image2.Visible := (FBildNr = 1);
  Image3.Visible := (FBildNr = 2);
  Inc(FBildNr);
  if FBildNr > 2 then
    FBildNr := 0;
end;
  Mit Zitat antworten Zitat
Coloneo

Registriert seit: 11. Dez 2010
3 Beiträge
 
#6

AW: einfache Animation

  Alt 20. Mär 2011, 12:34
Ok da war ich ja richtig blöd...
Mit den Tipps hats endlich geklappt und eleganter siehts auch aus,
danke euch.
  Mit Zitat antworten Zitat
alfold

Registriert seit: 29. Jun 2010
Ort: Neustrelitz
393 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: einfache Animation

  Alt 20. Mär 2011, 12:37
Ok da war ich ja richtig blöd...
Würde sagen nein. Du hast die Fehler erkannt

alfold
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:07 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