Artykuł opisuje w jaki sposób stworzyć anonimowany rysunek np. bohatera gry czy inne elemenety otoczenia.
Umieść na formie na formie komponenty :
Komponent – Proponowana nazwa
DXTimer – DXTimer1
DXDraw – DXDraw1
DXImageList – DXImageList1
DXSpriteEngine – SEngine
Na początku musisz zaopatrzyć się w jakiś rysunek składający się z dwóch lub kilku klatek w formacie BMP lub DIB. My użyjemy:
Teraz należy umieścić go w DxImageList1. Jako PatternWidth oraz PatternHeight podaj 50. Jest to szerokość i wysokość pojedynczej klatki. Nazwa w naszym przypadku to stwor. Przypominam o deklaracji naszego obiektu (szczegóły w starszych artykułach) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
type TGracz = class(TImageSprite) protected procedure DoMove(MoveCount: Integer); override; end; ... var Gracz : TGracz; implementation procedure TGracz.DoMove(MoveCount : Integer); begin inherited DoMove(MoveCount); end; |
Teraz przechodzimy do OnCreate naszej formy i podajemy :
1 2 3 4 5 6 7 8 9 10 11 12 |
procedure TForm1.FormCreate(Sender: TObject); begin Gracz := TGracz.Create(SEngine.Engine); Gracz.Image := DXImageList1.Items.find('stwor'); //rysunek do animowania Gracz.Width := 50; //szerokość klatki Gracz.Height := 50; //wysokość klatki Gracz.X := 0; //pozycja x Gracz.Y := 0; //pozycja y Gracz.AnimLooped:=true; //pętla wykonywania animacji Gracz.AnimCount:= 2; //liczba klatek Gracz.AnimSpeed:=0.4; //prędkość przekładania klatek end; |
Nowością są ostatnie trzy parametry. Aby animować jakiś rysunek wystarczy je uzupełnić.
Na zakończenie został nam Zegar. Interval tak jak zawsze ustaw na 0. Jako OnTimer podaj :
1 2 3 4 5 6 7 |
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); begin DXDraw1.Surface.Fill(0); SEngine.Move(lagCount); SEngine.Draw; DXDraw1.Flip; end; |
To wszystko.
Autor: Nakiel