Einzelnen Beitrag anzeigen

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