DelphiX-Tutorial für Anfänger

Ursprünglich erstellt von MiGa Mail Homepage (Danke!!)
Design-Anpassung und Veränderung von Simon

 

Kapitel 4

Animationen

Um eine Animation zu erstellen, benötigen wir erst ein Bild, genauer gesagt mehrere Bilder, da es ja eine Animation ist :).
Gut, also wie müssen die Bilder aufgebaut sein? DelphiX macht es recht einfach, mit Animationen umzugehen. Es müssen nicht viele Bilder sein, sonder alle Animationsschritte können in einer Bild Datei sein. Das ganz sieht dann so aus:

Bild "Anmation"

Die Felder müssen alle die gleiche Breite haben, damit die Animation richtig läuft.

Als Komponenten brauchen wir diesmal wieder eine DXDraw Fläche, die DXImageList , DXTimer und die DXSpriteEngine Komponenten. Sie müssen wieder dran denken, dass die DXDraw Eigenschaften in den Komponenten wieder auf DXDraw1 weisen.
In die DXImageList laden wir unser Animationsbild. Da wir wollen, dass die Bilder nacheinander angezeigt werden, müssen wir festlegen, wie breit ein Animationsbild ist. Das können wir mit Hilfe der PatterWidth Eigenschaft des Bildes in der DXImageList.
Als nächstes machen wir einen neuen Objekttyp der Abstammung TImageSprite. Das sollte dann so aussehen:

public
  { Public-Deklarationen}
end;

TAnimation = class(TImageSprite);

var
  Form1: TForm1;
  Animation: TAnimation;

Implementation

Dann gehen wir in das Form.Create Ereignis und schreiben folgendes:

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

Zuerst wir das neue Objekt erstellt (create-Anweisung).
Die Zweite Zeile ist etwas anders als wir sonst Bilder geladen haben. Diese find(name) Anweisung ist besser zu benutzen, da wir uns nicht mehr die einzelnen Item Zahlen merken müssen, sondern nur die Namen die wir den Bilder gegeben haben (in diesem Beispiel heißt das Bild"1").
Die nächsten 4 Zeilen sind wieder Standart Anweisungen. Sie bestimmen die X,Y- Werte und die Größe des Bildes.
Die letzten vier Anweisungen sind für unsere Animation wichtig. 
AnimCount bedeutet, dass wir insgesamt 5 Bilder in der Animation haben. 
AnimLooped heißt das die Animation wieder neu anfängt, wenn alle Bilder durch sind.

AnimSpeed (N/1000) ist die Zahl der Framewechsel in einer Sekunde.
AnimStart bedeutet, dass die Animation mit dem 1. Bild (1.Bild = 0 !) beginnt.

Als letztes schreiben wir in die DXTimer.OnTimer Eigenschaft:

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
  DXSpriteEngine1.Move(1);
  DXDraw1.Surface.Fill(0);
  DXSpriteEngine1.Draw;
  DXDraw1.Flip;
end;

Die erste Anweisung bedeutet, das alle Sprites in der DXSpriteEngine bewegt werden. Als nächstes wird der Hintergrund der DXDraw-Oberfläche mit der Farbe Schwarz gefüllt. Die Draw Anweisung bedeutet, dass alle Bilder angezeigt werden. Flip müsste jetzt bekannt sein.

Nun müssen sie nur noch F9 drücken und können ihre Animation bewundern.

 

<<Vorheriges Kapitel>>   <<Nächstes Kapitel>>