Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#11

AW: Brauche Hilfe bei einer Gehanimation!

  Alt 15. Mai 2011, 12:45
Wenn, dann doch eher so?

Delphi-Quellcode:
// als Feld in die Klasse aufnehmen:
// GehAnimation: Integer;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  //Inc(GehAnimation);
  //if GehAnimation >= 3{Anzahl} then GehAnimation := 0;
  GehAnimation := (GehAnimation + 1) mod 3{Anzahl};
  case GehAnimation of
    0: Player.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Graphiken\Charanimation1.ico');
    1: Player.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Graphiken\Charanimation2.ico');
    2: Player.Picture.LoadFromFile(ExtractFilePath(Application.ExeName) + 'Graphiken\Charanimation3.ico');
  end;
end;
Delphi-Quellcode:
// als Feld in die Klasse aufnehmen:
// GehAnimation: Integer;
// Verzeichnis: String;

// beim Programmstart initialisieren (z.B. in OnCreate):
// Verzeichnis := ExtractFileDir(Application.ExeName);

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  if Gehen then begin
    GehAnimation := (GehAnimation + 1) mod 3{Anzahl};
    Player.Picture.LoadFromFile(Format('%sGraphiken\Charanimation%d.ico', [Verzeichnis, GehAnimation + 1]));
  end else begin
    if GehAnimation >= 0 then // braucht ja nur einmal geladen zu werden
      Player.Picture.LoadFromFile(Verzeichnis + 'Graphiken\CharanimationStehen.ico');
    GehAnimation := -1;
  end;
end;
Und ich empfehle dir dringens die relativen Pfade abzuschaffen.
Die Gründe werden häufig genug hier im Forum genannt (siehe SuFu).

PS: Statt LoadFromFile alle Bilder nur einmal, beim Programmstart laden und dann via Picture.Assign zuweisen.
Also z.B. je Bild ein TPicture in einer Liste (TObjektList) oder notfalls mehrere "unsichtbare" TPicture auf der Form ablegen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Mai 2011 um 12:52 Uhr)
  Mit Zitat antworten Zitat