Einzelnen Beitrag anzeigen

fabiO

Registriert seit: 5. Dez 2004
Ort: Jena
41 Beiträge
 
Delphi 6 Personal
 
#5

Re: [DelphiX] DXDraw.surface "clearen"...

  Alt 2. Feb 2006, 18:16
Ok ich habe es nun "hinbekommen".

Zuerst hab ich einfach eine neue SpriteEngine eingefügt. Hiernach hab ich einfach per DXSpriteEngine1.dead die alten Sprites "gelöscht, dann das DXDraw gefüllt (DXDraw1.Surface.Fill(0)) und anzeigen lassen (DXDraw1.Flip).

Nun hab ich wieder meine Level-Create Procedure aufgerufen, wobei hier aber die Sprites nun mit der neuen SpriteEngine ( DXSpriteEngine2 ) created. Anschließend noch drawen ( DXSpriteEngine2.Draw ) und erneut flipen, und siehe da das neue "Level" wird dargestellt.
So nun hab ich aber mal ne Frage:

Bei dem ersten Level war es der Fall, dass er die Sprites it dem Spieler mitbewegt hat ( mit DXTimer event ). Ich habe das selbe DXTimer-Event nochmal für die zweite SpriteEngine eingefügt, nur wird da nix bewegt. Kann mir jemand sagen wieso ? Unten hab ich ma den relevanten Code gepostet...

Gruß fabiO

Delphi-Quellcode:
{ Collision-Procedure, trifft Spieler auf "Haustür"... }

/////////////////////////////////////////////////////////////////////////////////////

procedure TSpieler.DoCollision(Sprite: TSprite; var Done: Boolean);
var Gold,Gold2 : Integer;
    Sender : TObject;
    i, j : Integer;
    C : string;
    Inneresl : array[0..19] of string;
begin

//////////////////// falls Spieler auf THausTuer trifft ... ////////////////////

 if (Sprite is THausTuer) then
 begin
   Form1.DXSpriteEngine1.dead; // Alle Sprites löschen ( ich denk ma dass es so geht ? o_O )

   Form1.DXDraw1.Surface.Fill(0); // Hintergrund der DXDraw-Oberfläche Schwarz
   Form1.DXDraw1.Flip; // Oberfläche neu Zeichnen

{$INCLUDE Classes\HausInneresCreate.rpg}

   Form1.DXSpriteEngine2.Draw; // Sprites anzeigen
   Form1.DXDraw1.Flip; // Oberfläche neu Zeichnen
   Form1.DXTimer1.Enabled := false; // DXTimer1 für DXSpritEngine1 ausschallten
   Form1.DXTimer2.Enabled := true; // DXTimer2 für DXSpritEngine2 anschallten
 end;

/////////////////////////////////////////////////////////////////////////////////////

{ DXTimer-Event, für die zweite DXSpriteEngine... }

procedure TForm1.DXTimer2Timer(Sender: TObject; LagCount: Integer);
begin
  DXInput1.Update; // Aktuelle Input.States abfragen
  DXSpriteEngine2.Move(1); // alle Sprites bewegen
  DXDraw1.Surface.Fill(clGray); // Hintergrund der DXDraw-Oberfläche Schwarz
  DXSpriteEngine2.Draw; // Sprites anzeigen
  DXDraw1.Flip; // Oberfläche neu Zeichnen
end;

/////////////////////////////////////////////////////////////////////////////////////
  Mit Zitat antworten Zitat