Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi delphix/sprites (https://www.delphipraxis.net/15317-delphix-sprites.html)

Spurius 26. Jan 2004 13:45


delphix/sprites
 
Hallo,
ich möchte evtl. ein kleines Spiel machen. Als Graphikengine nehme ich wahrscheinlich Delphix.
Soll ich da Sprites verwenden oder nicht? Und was ist der Unterschied zwischen einem Image und einem Sprite?
Ich wollte eine Klasse für ein Fahrzeug anlegen, aber car=class(timage) geht nicht, da timage unbekannt.
Wovon soll ich sowas den ableiten? Im Prinzip möchte ich Bilder reinladen können und das "car" bewegen.
Gruß
Spurius

citybreaker 26. Jan 2004 14:17

Re: delphix/sprites
 
Wenn du DelphiX nimmst, würde ich dir schon empfehlen Sprites zu nehmen.
Indem fall wäre dann dein Beispiel mit dem car

Delphi-Quellcode:
type
 TCar = class(TImageSprite)
...
Guck am besten mal auf http://www.delphi-treff.de.

Spurius 26. Jan 2004 14:30

Re: delphix/sprites
 
Hallo,
bei mir wird das Sprite neu dazugezeichnet. Ich will aber, dass das alte Sprite gelöscht und dann das neue dazu gezeichnet wird.
Code:
procedure TForm1.FormCreate(Sender: TObject);
begin
 car := tcar.Create(dxspriteengine1.Engine);
 car.Image := dximagelist1.Items.Find('1');
 car.X := 0;
 car.Y := 0;
 car.Width := car.Image.Width;
 car.Height := car.Image.Height;
 form1.DoubleBuffered := true;
 dxdraw1.DoubleBuffered := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 car.X := car.X + 5;
 car.Y := car.Y + 5;
 dxspriteengine1.draw;
 dxdraw1.Flip;
end;

Seniman 26. Jan 2004 19:56

Re: delphix/sprites
 
Hallo Spurius,

zuerst musst du die alten Sprites von der DxDraw löschen, die sind immernoch drauf. Füg dazu einfach
Delphi-Quellcode:
dxdraw1.Surface.Fill(0);
vor dem Zeichnen in den Code ein.

Grüße
Seniman

Flogo 26. Jan 2004 21:12

Re: delphix/sprites
 
Außerdem würd ich dir empfehlen, dass du
Delphi-Quellcode:
  dxdraw1.Surface.Fill(0);
  dxspriteengine1.move(1);
  dxspriteengine1.draw;
  dxdraw1.Flip;
in einen (Dx-)Timer schreibst. Dann wird es dauernd ausgeführt und wenn du das Auto bewegen willst brauchst du dich nur noch um die Koordinaten zu kümmern.
Das move ist übrigens nur wichtig, wenn du die DoMove-Procedure des Autos überschreibst (macht sinn wenn es sich dauernd bewegen soll)


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz