AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi [DelphiX] Nach umsotierung Sprites weg
Thema durchsuchen
Ansicht
Themen-Optionen

[DelphiX] Nach umsotierung Sprites weg

Ein Thema von Neutral General · begonnen am 13. Jul 2006 · letzter Beitrag vom 13. Jul 2006
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

[DelphiX] Nach umsotierung Sprites weg

  Alt 13. Jul 2006, 16:34
Hi,

Isn bisschen komischer Titel aber mir ist nix besseres eingefallen
Also mit dieser Procedure Teile ich eine ObjectListe auf und verlege die Objecte dadrin in drei andere Objectlisten:

Delphi-Quellcode:
Kartenstapel: TKarten; // TKarten = class(TObjectlist)
Spieler: Array[0..3] of TKarten;
Delphi-Quellcode:
procedure TForm1.GiveKarten;
var i: Integer;
    z: Integer;
begin
  while KartenStapel.Count > 0 do begin
   for i:= 0 to 3 do begin
     if Kartenstapel.Count = 0 then exit;
     z:= random(Kartenstapel.Count);
     Spieler[i].Add(Kartenstapel.Items[z]);
     Kartenstapel.Items[z].AnimStart := Kartenstapel.Items[z].AnimStart + 1;
     if Kartenstapel.Items[z].AnimStart = 2 then Kartenstapel.Delete(z);
   end;
   Application.ProcessMessages;
  end;
end;
AnimStart benutze ich nur zum zählen.. das ist jetzt nur am Anfang so. Also das heißt das jede Karte zweimal existiert nachher. Weil eine Karte zweimal in eine Objectliste eingefügt werden kann.

So die Items der Objectlisten sind vom Typ TImageSprite.. Und nachdem ich die Procedure ausgeführt hab sind die nicht mehr in meiner SpriteEngine drin... Kann man da was gegen machen ? Bzw wie bekomm ich die da wieder rein

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: [DelphiX] Nach umsotierung Sprites weg

  Alt 13. Jul 2006, 17:32
Hi,

du hast den Kartenstapel vermutlich mit Create() erzeugt - dabei ist dann OwnsObjects = True und beim Delete(z) wird dann das Objekt zerstört. Nimm den constructor Create(False) und alles wird gut.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: [DelphiX] Nach umsotierung Sprites weg

  Alt 13. Jul 2006, 20:56
Mh gut jetzt sind die Bilder wieder/noch in der Engine. Aber komischerweise malt er sie trotzdem nicht
Also zuerst lade ich die Karten in den Kartenstapel.

Wenn ich dann ne/die Karte(n) malen will
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var i: Integer;
begin
  for i:= 0 to 23 do begin
   Kartenstapel.Items[i].Image := DXImageList1.Items[i];
   Kartenstapel.Items[i].Height := Kartenstapel.Items[i].Image.Height;
   Kartenstapel.Items[i].Width := Kartenstapel.Items[i].Image.Width;
   if i <> 23 then Kartenstapel.Items[i].Visible := false;
  end;
  DXDraw1.Surface.Fill(0);
  DXSpriteEngine1.Draw;
  DXDraw1.Flip;
end;
funktioniert das.

Wenn ich jetzt die Karten ausgebe und die dann folgendermaßen malen will klappts nicht:
Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var i: Integer;
begin
// ShowMessage(IntToStr(DXSpriteEngine1.Engine.Count)); = 24
 for i:= 0 to 11 do begin
   // Image ist schon festgelegt...
   Spieler[0].Items[i].Height := Spieler[0].Items[i].Image.Height;
   Spieler[0].Items[i].Width := Spieler[0].Items[i].Image.Width;
   Spieler[0].Items[i].x := i*Spieler[0].Items[i].Width;
   Spieler[0].Items[i].y := 10;
   Spieler[0].Items[i].Visible := true;
 end;
 DXDraw1.Surface.Fill(0);
 DXSpriteEngine1.Engine.Draw;
 DXDraw1.Flip;
end;
Warum funktioniert das denn jetzt bitte nicht mehr -.-

Gruß
Neutral General
Michael
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:02 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