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:

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>>
|