Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Problem mit Spriteanimation unter DelphiX (https://www.delphipraxis.net/48882-problem-mit-spriteanimation-unter-delphix.html)

Spessi 1. Jul 2005 21:16


Problem mit Spriteanimation unter DelphiX
 
Hi, hab vorhin (endlich) mal ein Tutorial für DelphiX gefunden. Jetzt häng ich an einem Problem der Spriteanimation... Also erstmal hier der Code
Delphi-Quellcode:
TAnimation = class(TImageSprite);

var
  Form1: TForm1;
  Animation: TAnimation;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Animation := TAnimation.Create(DXSpriteEngine1.Engine);
  with Animation do begin
   Image := Form1.DXImageList1.Items.Find('Player');
   X := 0;
   Y := 0;
   Z := 0;
   Width := Animation.Image.Width;
   Height := Animation.Image.Height;
   AnimCount := 4;
   AnimLooped := True;
   AnimSpeed := 50/1000;
   AnimStart := 0;
  end;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  DXSpriteEngine1.Move(1);
  DXDraw1.Surface.Fill(0);
  DXSpriteEngine1.Draw;
  DXDraw1.Flip;
end;
end.
Da ich leider nich weiß, wie ich gute Sprites schnell erstelle (Geht ja sicher anderster, als jedes Bild einzel malen) hab ich jetzt einfach 2 Bilder jeder 32x32px in ein 64x32px gepackt.. Müsste ja normal jetzt zwischen den beiden hinundhewechseln, tut sich aber nix :(
Kann mir evtl. einer weiterhelfen? Danke schonmal im Vorraus.
Mfg Spessi

Cicaro 17. Jan 2006 14:17

Re: Problem mit Spriteanimation unter DelphiX
 
Du solltest die Methode Move des TImageSprite in deinem TAnimation überschreiben und vielleicht dort die AnimPos einstellen.
Delphi-Quellcode:
TAnimation = class(TImageSprite)
public
  procedure Move(MoveCount:Integer);
end;

procedure TAnimation.Move(MoveCount:Integer);
begin
  // hier die Funktion für die AnimPos
  AnimPos:=f(MoveCount);
end;
So hab' ich das in einigen von meinen Projekten mit DelphiX gemacht.
Bei der automatischen Animation müsstest du vielleicht irgendwas auf True setzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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