Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX und DirectInput (https://www.delphipraxis.net/15550-delphix-und-directinput.html)

Spurius 30. Jan 2004 18:02


DelphiX und DirectInput
 
Hallo,
warum funktioniert folgender Code nicht?
Delphi-Quellcode:
 type
 tcar = class(timagesprite)
 private
 public
  procedure DoMove(MoveCount: Integer); override;
 end;
var
  Form1: TForm1;
  car: tcar;
implementation

{$R *.dfm}

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 tcar.DoMove(movecount: integer);
begin
 if isLeft in Form1.DxInput1.States then
    car.X := car.X -3;
  if isRight in Form1.DxInput1.States then
    car.X := car.X +3;
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
 form1.dxspriteengine1.Draw;
 form1.dxdraw1.Flip;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
 form1.dxspriteengine1.Draw;
 form1.dxdraw1.Flip;
end;

end.
Gruß
Spurius

ATwardz 30. Jan 2004 18:20

Re: DelphiX und DirectInput
 
Hi,

Du mit in deine Timer Methode DYINPUT.update; reinbringen dann muss es gehn denke ich so nach überfliegen deines Codes!

@wardz

ATwardz 30. Jan 2004 18:26

Re: DelphiX und DirectInput
 
So mäüsste dann dein Timercode aussehn!
Delphi-Quellcode:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
 dxinput1.Update;//Wichtig um die Keys zu überprüfen
 dxspriteengine1.Move(0);//Sprites werden bewegt
 dxspriteengine1.Dead; //gelöschte sprites werden entfernt sonst sieht man alle je gezeichneten Sprites
 dxspriteengine1.Draw;//Sprites werden gezeichnet
 DXDraw1.Flip;//Screen wird ausgegeben!
end;
@wardz

Spurius 30. Jan 2004 19:05

Re: DelphiX und DirectInput
 
Hallo,
jetzt bewegt es sich zwar, aber die alten Sprites werden nicht gelöscht.
Delphi-Quellcode:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
 dxinput1.Update;
 dxspriteengine1.Move(0);
 dxspriteengine1.Dead;
 dxspriteengine1.Draw;
 dxdraw1.Flip;
end;

Haegar 30. Jan 2004 19:27

Re: DelphiX und DirectInput
 
Zitat:

Zitat von Spurius
Hallo,
jetzt bewegt es sich zwar, aber die alten Sprites werden nicht gelöscht.
Delphi-Quellcode:
dxdraw.surface.fill(0);


ATwardz 31. Jan 2004 14:55

Re: DelphiX und DirectInput
 
Stimmt hate ich vergessen muss du hinzufügen wenn wenn du keinen BAckgroundsprite erstellt hast!

@wardz

-homer- 6. Feb 2004 15:42

Re: DelphiX und DirectInput
 
hi,

ohne den Befehl: DXDraw1.Surface.Fill(0);
Wird es nicht gehen. Der Befehl, macht den Hintegrund Schwarz.


-homer-


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:58 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