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