![]() |
2 Objekte mit verschiedenen Eigenschaften
Hallo,
ich hab in folgendem Code die Klasse TCar. Ich will davon Car und Car2 als Instanzen? haben. Wenn ich jedoch z.B. Car2 im FormCreate Ereignis ein Bild zuweise, dann hat Car dasselbe Bild. Wie kann ich das umgehen?
Delphi-Quellcode:
Gruß
TCar=Class(TImageSprite)
public MunitionMG: Integer; Ausrichtung: Byte; Constructor Create(AParent: TSprite); Override; // Um die Klasse geht es procedure DoMove(MoveCount: Integer); Override; procedure Schiessen; end; TMG=Class(TImageSprite) public Ausrichtung: Integer; Constructor Create(AParent: TSprite); Override; Procedure DOMove(MoveCount: Integer); Override; end; var Form1: TForm1; Car, Car2: TCar; // Car und Car2 Fire: Integer; implementation {$R *.dfm} Constructor TCar.Create(AParent: TSprite); begin inherited; Image := Form1.DXImageList1.Items.Find('Car'); Width := Image.Width; Height := Image.Height; MunitionMG := 10; Ausrichtung := 1; X := 10; Y := 10; end; procedure TCar.DoMove(MoveCount: Integer); begin inherited; If isUp in Form1.DXInput1.States then begin Car.Ausrichtung := 1; Car.Y := Car.Y - 3; end; If isRight in Form1.DXInput1.States then begin Car.Ausrichtung := 2; Car.X := Car.X + 3; end; If isDown in Form1.DXInput1.States then begin Car.Ausrichtung := 3; Car.Y := Car.Y + 3; end; If isLeft in Form1.DXInput1.States then begin Car.Ausrichtung := 4; Car.X := Car.X - 3; end; end; procedure TCar.Schiessen; begin with TMg.Create(Form1.DXSpriteEngine1.Engine) do begin Ausrichtung := Car.Ausrichtung; X := Self.X; Y := Self.Y; end; end; //-----TCar------------ Constructor TMg.Create(AParent: TSprite); begin inherited Create(AParent); Image := Form1.DXImageList1.Items.Find('Mg'); Width := Image.Width; Height := Image.Height; end; procedure TMg.DOMove(MoveCount: Integer); begin inherited; case Ausrichtung of 1: Y := Y - 8; 2: X := X + 8; 3: Y := Y + 8; 4: X := X - 8; end; end; procedure TForm1.FormCreate(Sender: TObject); //In dem Eieignis will ich Car2 ein anderes begin Form1.DoubleBuffered := True; //Bild zuweisen, Car soll sein altes Bild behalten Form1.DXDraw1.DoubleBuffered := True; Car := TCar.Create(DXSpriteEngine1.Engine); Car2 := TCar.Create(DXSpriteEngine1.Engine); Fire := 1; end; Spurius |
Re: 2 Objekte mit verschiedenen Eigenschaften
Koennte es daran liegen?
Delphi-Quellcode:
Ich wuerde vielleicht eine weitere Methode erstellen, die
Image := Form1.DXImageList1.Items.Find('Car');
Delphi-Quellcode:
enthaelt.
Image := Form1.DXImageList1.Items.Find('Car2');
|
Re: 2 Objekte mit verschiedenen Eigenschaften
Car ist nur die Bezeichnung für ein Bild in einer ImageList.
|
Re: 2 Objekte mit verschiedenen Eigenschaften
Zitat:
Du musst also den Konstruktor aendern (weiterer Parameter, z.B. Referenz auf das Bild oder ein Aufzaehlungstyp) oder eins der Bilder nachtraeglich ersetzen, z.B.
Delphi-Quellcode:
Car2.Image:=Form1.DXImageList1.Items.Find('Car2');
|
Re: 2 Objekte mit verschiedenen Eigenschaften
Das habe ich schon probiert
Code:
Aber da bekommt dann Car dasselbe Bild.
Car2.Image:=Form1.DXImageList1.Items.Find('test');
|
Re: 2 Objekte mit verschiedenen Eigenschaften
Geht jetzt. Hier der Code wens interessiert:
Delphi-Quellcode:
Gruß
Form1.DoubleBuffered := True;
Form1.DXDraw1.DoubleBuffered := True; Car := TCar.Create(DXSpriteEngine1.Engine); Car2 := TCar.Create(DXSpriteEngine1.Engine); Car2.Image := DXImageList1.Items.Find('test'); Car2.Width := 50; Car2.Height := 50; Car2.X := 50; Car2.Y := 50; Spurius |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 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