AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi 2 Objekte mit verschiedenen Eigenschaften
Thema durchsuchen
Ansicht
Themen-Optionen

2 Objekte mit verschiedenen Eigenschaften

Ein Thema von Spurius · begonnen am 10. Jul 2004 · letzter Beitrag vom 10. Jul 2004
Antwort Antwort
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#1

2 Objekte mit verschiedenen Eigenschaften

  Alt 10. Jul 2004, 13:14
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:
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;
Gruß
Spurius
  Mit Zitat antworten Zitat
BKempf

Registriert seit: 1. Jun 2004
103 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: 2 Objekte mit verschiedenen Eigenschaften

  Alt 10. Jul 2004, 13:25
Koennte es daran liegen?
Image := Form1.DXImageList1.Items.Find('Car'); Ich wuerde vielleicht eine weitere Methode erstellen, die
Image := Form1.DXImageList1.Items.Find('Car2'); enthaelt.
The problem with troubleshooting is that sometimes the trouble shoots back.
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#3

Re: 2 Objekte mit verschiedenen Eigenschaften

  Alt 10. Jul 2004, 13:33
Car ist nur die Bezeichnung für ein Bild in einer ImageList.
  Mit Zitat antworten Zitat
BKempf

Registriert seit: 1. Jun 2004
103 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: 2 Objekte mit verschiedenen Eigenschaften

  Alt 10. Jul 2004, 13:40
Zitat von Spurius:
Car ist nur die Bezeichnung für ein Bild in einer ImageList.
Im Konstruktor wird das Bild aber beiden neu erzeugten Objekten zugewiesen.
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.
Car2.Image:=Form1.DXImageList1.Items.Find('Car2');
The problem with troubleshooting is that sometimes the trouble shoots back.
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#5

Re: 2 Objekte mit verschiedenen Eigenschaften

  Alt 10. Jul 2004, 14:29
Das habe ich schon probiert
Code:
Car2.Image:=Form1.DXImageList1.Items.Find('test');
Aber da bekommt dann Car dasselbe Bild.
  Mit Zitat antworten Zitat
Spurius

Registriert seit: 19. Aug 2003
294 Beiträge
 
Delphi 7 Professional
 
#6

Re: 2 Objekte mit verschiedenen Eigenschaften

  Alt 10. Jul 2004, 16:33
Geht jetzt. Hier der Code wens interessiert:
Delphi-Quellcode:
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;
Gruß
Spurius
  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 08:49 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