Okay, mit mehreren Labels klappt das gut soweit, vielen Dank.
Eine letzte Frage für Heute habe ich aber noch, denn wenn ich versuche statt einem Label das Ganze mit einem Image zu machen, bekomme ich eine Errormeldung.
Code:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState
);
begin
case Key of
37: PlayerIMG.Left:=PlayerIMG.Left-10;
39: PlayerIMG.Left:=PlayerIMG.Left+10;
$20: ErzeugeLaser('.\gfx\Laser.jpg');
end;
end;
Code:
procedure TForm1.ErzeugeLaser(const Picture: String);
var
ILaser:TImage;
begin
ILaser := TImage.Create( nil );
ILaser.Picture.LoadFromFile(Picture);
ILaser.Width:=8;
ILaser.Height:=16;
ILaser.Left:=PlayerIMG.Left+12;
ILaser.Top:=PlayerIMG.Top-32;
ILaser.Parent:=Self;
ILaser.Tag:=10;
LaserList.Add(ILaser);
end;
Code:
procedure TForm1.LaserTimerTimer(Sender: TObject);
var
i: Integer;
ILaser: TImage;
begin
i := 0;
while i < LaserList.Count do
begin
ILaser := LaserList.Items[i] as TImage;
if ILaser.Top = 0 then
begin
LaserList.Delete(i);
end
else
begin
ILaser.Top:=ILaser.Top - 5;
Inc(i);
end;
end;
end;
Letzendlich habe ich genau den gleichen Code benutzt, nur eben auf ein Image übertragen. Doch mir wird eine Fehlermeldung in der Zeile
Code:
while i < LaserList.Count do
angezeigt.