Delphi-Quellcode:
procedure TForm2.Timer2Timer(Sender: TObject);
begin
with Image2.Picture
do
case feuer
of
0: Loadfromfile('
.\flyer.bmp');
1: Loadfromfile('
.\flyer Kopie.bmp');
end;
case feuer
of
0: inc(feuer);
1:
dec(feuer);
end;
end;
Tschuldigung aber so etwas Programiermüll. Alle X Millisec auf der Festplatte rumkratzen...
Lade es dir in eine Bitmap und gut ist. Meinetwegen auch in ein Image dann kanst du es einfach
mit Top/Left verschieben.
Der Fewhler kommt beim Timer2:
Delphi-Quellcode:
procedure TForm2.Timer1Timer(Sender: TObject);
var
i: Integer;
begin
with Image2 do begin
if GetAsyncKeyState(VK_left)<>0 then Left := Left-2;
if GetAsyncKeyState(VK_right)<>0 then Left := Left+2;
if GetAsyncKeyState(VK_Up)<>0 then Top := Top-2;
if GetAsyncKeyState(VK_Down)<>0 then Top := Top+2;
end;
for i := low(Schuss) to high(Schuss) do begin
if Schuss[i].Y > 0 then Schuss[i].Y := Schuss[i].Y-1; // sollte so aussehen
//^^^^^^^^^^^^^^^^^^^^^^^^
if Schuss[i].Y<20 then begin
Move(Schuss[1], Schuss[0], Length(Schuss)); // und hier das zweite Problem
SetLength(Schuss, Length(Schuss)-1); // das solltest du dir nochmal
end; // genau durchdenken.
Canvas.Ellipse(Schuss[i].X-5, Schuss[i].Y-5, Schuss[i].X+5, Schuss[i].Y+5);
end;
end;