Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Spielfiguren (TImage) ohne Parent erstellen? (https://www.delphipraxis.net/171071-spielfiguren-timage-ohne-parent-erstellen.html)

Jazzman_Marburg 18. Okt 2012 18:05

Spielfiguren (TImage) ohne Parent erstellen?
 
Hallo Gemeinde.
Für nachfolgendes Problem habe ich zwar eine Lösung -- aber sie garnicht schön, und ich hoffe ihr habt eine bessere Idee:
Für ein Spiel habe ich TFigur von TImage abgeleitet. Zu dem Zeitpunkt wenn ich sie erstelle, möchte ich sie aber garnicht zeichnen. Aber TImage benötigt nuneimal ein Parent. So übergebe ich also zu diesem Zeitpunkt eine Dummy-Panel (visible:=false). Später assigne ich dem eigentlichen Panel die Figuren und sie werden gezeichnet -- was ok ist.

Aber diese Konstruktion mit dem Dummy-Panel ist doch irgendwie fishy, oder?
Habt ihr eine elegantere Idee?

Vielen Dank
Jazzman

Sir Rufo 18. Okt 2012 18:13

AW: Spielfiguren (TImage) ohne Parent erstellen?
 
Ein TImage ist nur ein visueller Container. Erstelle eine Bitmap und füttere meinetwegen das Image wenn es benötigt wird damit.

shmia 18. Okt 2012 18:15

AW: Spielfiguren (TImage) ohne Parent erstellen?
 
Zitat:

Zitat von Jazzman_Marburg (Beitrag 1187509)
Für ein Spiel habe ich TFigur von TImage abgeleitet

Da fängt das Problem schon an.
Du hast die Vererbung auf falsche Weise eingesetzt.
Ein TImage ist eine visuelle Komponente um ein Picture anzuzeigen.
Ein Spielfigur ist etwas ganz anderes; es dreht sich dabei mehr um den Inhalt; also wie die Figur aussieht; als um die Anzeige.

Ich würde TFigur unabhängig von TImage, TPaintbox oder Ähnlichem entwerfen:
Delphi-Quellcode:
TFigur = class(TPersistent)
private
  ..
public
  procedure Assign(Source: TPersistent);override;
  procedure PaintToCanvas(canvas:TCanvas);

  property Left:Integer ...;
  property Top...;
  property Width...
  property Height...;
end;

Jazzman_Marburg 18. Okt 2012 18:28

AW: Spielfiguren (TImage) ohne Parent erstellen?
 
Zitat:

Zitat von shmia (Beitrag 1187511)
Zitat:

Zitat von Jazzman_Marburg (Beitrag 1187509)
Für ein Spiel habe ich TFigur von TImage abgeleitet

Da fängt das Problem schon an.
Du hast die Vererbung auf falsche Weise eingesetzt.

Hmm... muß ich erstmal drüber nachdenken (soll ja helfen).
Von TPersistent abzuleiten -- im Leben wäre ich nicht darauf gekommen.

Vielen Dank shmia -- auch an Sir Rufo!
Gruß
Jazzman

implementation 18. Okt 2012 18:30

AW: Spielfiguren (TImage) ohne Parent erstellen?
 
Zudem verwechselst du Parent mit Owner. Ein TImage braucht beim Create noch kein Parent. Das was du uebergibst ist nur der Owner, das Parent kann doch erstmal auf nil bleiben und du weist es erst zu, wenn du eines hast.

Sir Rufo 18. Okt 2012 18:36

AW: Spielfiguren (TImage) ohne Parent erstellen?
 
@shima Es ist besser AssignTo abzuleiten und nicht Assign ;)

himitsu 18. Okt 2012 18:38

AW: Spielfiguren (TImage) ohne Parent erstellen?
 
Und der Owner kann auch nil bleiben. (das sogar die ganze Zeit über, wenn es sein muß)


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