DelphiX-Tutorial für Anfänger

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

 

Kapitel 5

Einiges kennen Sie schon aus den vorherigen Kapiteln.

Sprites selber bewegen

Jetzt werde ich ihnen zeigen, wie sie per Tastatur, Maus oder Joystick die Sprites bewegen können. Auch hierfür stellt ihnen DelphiX eine extra Komponente zur Verfügung: DXInput.

Also los! Wir benutzen unser letztes Projekt (Animationen) und fügen die DXInput Komponente hinzu.
Das TAnimations Objekt ergänzen wir durch folgende Zeilen:

public
  { Public-Deklarationen}
end;


TAnimation = class(TImageSprite)
  public
    procedure DoMove(MoveCount: Integer); override;
    constructor Create(AParent: TSprite ); override;
  end;

var
  Form1: TForm1;
  Animation: TAnimation;

Implementation

Durch die eigene Create-Anweisung müssen wir jetzt folgendes schreiben:

constructor TAnimation.Create(AParent: TSprite );
begin
  inherited Create(AParent);
  Image:=Form1.DXImageList1.Items.Find('1');
  Width :=Image.Width;
  Height :=Image. Height;
  Visible:=True;
end;

Die Create-Eigenschaft der Form muss dann nur noch so aussehen:

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TAnimation.Create(DXSpriteEngine1.Engine) do
  begin
    x:=0;
    y:=0;
  end;
end;

 

Nun müssen wir nur noch die DoMove Prozedur schreiben. Sie muss so aussehen:

procedure TAnimation.DoMove(MoveCount: Integer);
begin
  inherited DoMove(MoveCount); {Besonders wichtig !!!}
  If isUp in Form1.DXInput1.States Then
    Y := Y -10;
  If isDown in Form1.DXInput1.States
    Then Y := Y + 10;
  If isLeft in Form1.DXInput1.States Then
    X := X -10;
  If isRight in Form1.DXInput1.States Then
    X := X +10;
  AnimCount := 5; {Die Sachen kommen jetzt hier rein !!}
  AnimLooped := True;
  AnimSpeed := 20/1000;
  AnimStart := 0;
end;

Das heißt immer folgendes:
Wenn eine Taste (Up, Down, Left, Right) gedrückt wird, dann wird die X bzw. Y Koordinate geändert. Welche Tasten für Hoch, Runter,... belegt sind erhalten sie, wenn sie per Doppelklick auf die DXInput Komponente ins Register Keyboard gehen:

Property-Editor "DirectInput"

In die OnTimer Eigenschaft der DXTimer Komponente müssen wir noch rein schreiben, dass die DXInput Eingaben ständig überprüft werden. Da sollte so aussehen:

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

Das war's auch schon! Das Animationsbild bewegt sich jetzt, wenn sie es wollen.

 

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