Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DelphiX-------Schuss problem !!! (https://www.delphipraxis.net/18906-delphix-schuss-problem.html)

bundy 25. Mär 2004 22:22


DelphiX-------Schuss problem !!!
 
Hallo Leute

Ich hab ein problem.
Warum verschwinden nicht alle Schüsse ?

Delphi-Quellcode:

 Tschuss = class(TImageSpriteEx)
    leben,speed:single;
  public
   constructor Create(AParent: TSprite ); override;
   Procedure DoMove(MoveCount: Integer);override;
    procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
  end;


procedure Tschuss.DoCollision(Sprite: TSprite; var Done: Boolean);
begin
 if Schuss.X>1000 then dead;

end;


constructor Tschuss.Create(AParent: TSprite );
begin
  inherited Create(AParent);
  Image:=Form1.DXImageList1.Items.Find('Schuss');
  width:=image.width;
  height:=image.height;

end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin

DXInput1.Update;
DXSpriteEngine1.Move(1);
DXDraw1.Flip;
DXSpriteEngine1.Draw;
DXSpriteEngine1.Dead;

end;
Nicht alle Schüsse sterben. Und nach ein paar Minuten ruckelt die Anwendung, weil zuviele Sprites da sind
Was mach ich da falsch ? :wall: :wall: :wall: :gruebel: :gruebel:

tommie-lie 25. Mär 2004 22:29

Re: DelphiX-------Schuss problem !!!
 
Ich bin weder DelphiX-Spezialist noch -Fan, aber du machst du Freigeben der Objekte anscheinend in "DoCollision". Vom Namen her würde ich sagen, daß das nur aufgerufen wird, wenn die Collision Detection Engine eine Kollision des Projektils mit irgendwas anderem erkannt hat. Wenn man nun daneben schießt, kollidiert nix und folglich wird die Funktion niemals aufgerufen.
Von daher bräuchtest du irgendein Event, das in jedem Frame aufgerufen wird (DoMove :?:) und in dem du dann überprüfst, ob die X-Position weit genug weg ist, daß du das Objekt löschen kannst.

bundy 25. Mär 2004 22:45

Re: DelphiX-------Schuss problem !!!
 
Das dürfte jezt funzen :thuimb: DANKE

Aber weisst du vielecht auch noch warum alle Schüsse sterben und nicht nur der ,der sterben soll ? :gruebel:

bundy 25. Mär 2004 23:08

Re: DelphiX-------Schuss problem !!!
 
Ich habs rausgefunden ganz von alleine :thuimb: :thuimb:

Delphi-Quellcode:
if (Y = Form1.DXDraw1.Height) or ((X < 0) or (X > Form1.DXDraw1.Width)) then
    begin
    Dead;
    end;
DANKE NOCHMALS :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:14 Uhr.

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