Einen Abspann mit DelphiX
In diesem Tutorial zeige ich die "einfachste" Methode einen Abspann mit
DelphiX zu realisieren.
Was braucht man ?
- Delphi + DelphiX
- Ein Grafikprogramm (Paint sollte für unsere Zwecke reichen)
Man kann die ganze Sache natürlich auch komplett coden, aber für nen einfachen
Abspann ist das denn doch zu viel Arbeit.
(1). Ein Abspann-Bild mit Paint erstellen
- Paint öffnen, ein neues Bild erstellen.
- Das Bild sollte 250 - 350 Pixel breit und darf beliebig Lang sein.
- Am besten nehmt ihr als hintergrundfarbe schwarz und als Textfarbe weiß.
- Dort können dann die Credits einfach wie folgt reingeschrieben werden:
Titel
Vorname Nachname
...
- Das wird dann als 24 Bit Bitmap im ProjektOrdner gespeichert.
(2). Komponenten platzieren und einstellen
- Öffnet (für dieses Beispiel) am besten ein leeres Projekt.
- Platziert DXDraw auf eurem Formular und stellt
Align auf
alClient.
- die Höhe des Formulars spielt im wesentlichen keine Rolle, aber es sollte nicht zu schmal sein.
- Jetzt Brauchen wir eine ImageList, platziert diese und wählt bei
DXDraw euer
DXDraw aus (doppelklick auf das leere feld).
- Wählt
Items an und klickt auf die 3 Punkte daneben, wählt euer bild aus und
stellt sicher, dass
Transparent auf
true gestellt und
TransparentColor die Farbe eures hintergrundes ist.
- Das gleiche macht ihr mit der
SpriteEngine (PacMan Symbol).
- Dann brauchen wir noch einen
DXTimer, dessen
interval ihr am besten auf 30 - 33 stellt (ergibt eine FPS-Zahl von ~30).
- Alles andere könnt ihr so lassen wie es ist.
(3). Abspann coden
- Wenn ihr das Programm jetzt kompiliert, siehts noch recht langweilig aus.
- Deshalb hier mal etwas code:
- Als erstes braucht ihr eine Variable vom Typ TBackgroundSprite:
Delphi-Quelltext
1: 2:
| var BG: TBackgroundsprite; |
Man könnte auch ne eigene Klasse deklarieren, aber ich wüsste nicht, wozu das hier gut sein sollte.
- Dann werden wir den Sprite erstellen und auf seine StartPosition setzen:
(Das machen wir im
Form.Create).
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TForm1.FormCreate(Sender: TObject); begin BG := TBackgroundSprite.Create(DXSpriteEngine1.Engine); with BG do begin Engine.y := Form1.ClientHeight;
SetMapSize(1, 1); Image := DXImageList1.Items[0]; end; end; |
- Nun soll sich das Bild langsam von unten nach oben bewegen,
also wählen wir die
OnTimer Procedure des Timers und legen los:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin BG.Engine.y := BG.Engine.y - 1; DXDraw1.Surface.Fill(clblack); DXSpriteEngine1.Draw; DXDraw1.Flip; end; |
- Das wars eigentlich schon, nur was ist, wenn man möchte, das am ende zb ein bild ist und der abspann dort stehen bleiben soll, anstatt zu verschwinden ?
Hier ist die Lösung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin if BG.Engine.y + BG.image.height > Form1.Clientheight then
BG.Engine.y := BG.Engine.y - 1; DXDraw1.Surface.Fill(clblack); DXSpriteEngine1.Draw; DXDraw1.Flip; end; |
- Jetzt kann man noch eine DXInput Komponente platzieren, Button3 auf ESC stellen und dafür sorgen, dass man den Abspann abbrechen kann:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin DXInput1.Update; if BG.Engine.y + BG.image.height > Form1.Clientheight then BG.Engine.y := BG.Engine.y - 1; DXDraw1.Surface.Fill(clblack); DXSpriteEngine1.Draw; DXDraw1.Flip; if IsButton3 in DXInput1.States then Close; end; |
So das wars, hoffe es hat bei euch allen funktioniert und würde mich auf Feedback freuen
Hier mal mein Ergebnis: