Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Selbst erzeugtes Image bleibt "hängen" wenn man mehrmals kli (https://www.delphipraxis.net/12185-selbst-erzeugtes-image-bleibt-haengen-wenn-man-mehrmals-kli.html)

Die Muhkuh 22. Nov 2003 15:12


Selbst erzeugtes Image bleibt "hängen" wenn man me
 
Hiho,


hier ist der neue Thread^^ :wink:


Ähm, wie gesagt erzeuge ich in eine Paintbox ein Image. Dieses Image bewege ich mit nem Timer! Das ereignis wird ausgelöst wenn ich auf die Linke Maustaste drücke. Wenn ich aber mehrmals klicke dann bleiben die "alten" Image stehen und ein neues kommt das sich bewegt! Das Problem ist nur das sich die alten auch weiter bewegen sollen! Aber wie?


Spider

phlux 22. Nov 2003 15:35

Re: Selbst erzeugtes Image bleibt "hängen" wenn ma
 
Ich denke mal die alten laufen erst dann weiter wenn das letzte erstellte aufgehört hat zu laufen :?:

Die Muhkuh 22. Nov 2003 15:40

Re: Selbst erzeugtes Image bleibt "hängen" wenn ma
 
Ne die bleiben dann immer stehen

Die Muhkuh 22. Nov 2003 16:15

Re: Selbst erzeugtes Image bleibt "hängen" wenn ma
 
Ein weiteres Problem ist:

Da ich die KI erweiter hab (der gegner schießt nun auch) und die Schüsse bleiben hängen reagiert das Spiel bald nicht mehr!
Aber ich hab keine lösung für das Problem! Vielleicht müsste man es mit dyn. Array machen! Aber Keine Ahnung :gruebel:


Bitte helft mir

Sharky 22. Nov 2003 18:51

Re: Selbst erzeugtes Image bleibt "hängen" wenn ma
 
Hai Spider,

Zeige doch mal den Code deines Timers.

Die Muhkuh 22. Nov 2003 19:36

Re: Selbst erzeugtes Image bleibt "hängen" wenn ma
 
Hai Hai, ( :grin: )

hier ist der gesamte Quellcode:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if Geg.Top < Spi.Top then
    Geg.Top := Geg.Top + 1
  else
  if Geg.Top > Spi.Top then
    Geg.Top := Geg.Top - 1;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Screen.Cursor := -1;
  Form1.DoubleBuffered := true;
  i := 5;
end;

procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Spi.Left := X;
  Spi.Top := Y;
end;

procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);

begin
{  Schuss.Visible := true;
  Schuss.Left := Spi.Left;
  Schuss.Top := Spi.Top + 9;     }
  Sch := TImage.Create(Paintbox1);
  Sch.Picture.LoadFromFile('Schuss.bmp');
  Sch.Left := Spi.Left;
  Sch.Top := Spi.Top;
  Sch.Parent := Form1;
  Timer4.Enabled := true;
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  if Paintbox1.Canvas.Pixels[Sch.Left,Sch.Top] = clblack then
    begin
      dec(i,1);
      Label1.Caption := 'Leben: ' + inttostr(i);
      if I < 1 then
        begin
          Timer1.Enabled := false;
          Geg.Free;
        end;
    end;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
  Sch.Left := Sch.Left - 10;
end;


procedure TForm1.FormShow(Sender: TObject);
begin
  Sch := TImage.Create(Paintbox1);
  Sch.Picture.LoadFromFile('Schuss.bmp');
  Sch.Left := 0;
  Sch.Top := 0;
  Sch.Parent := Form1;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  if Geg.Top = Spi.Top then
    Timer5Timer(Sender);
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
  Sch1.Left := Sch1.Left + 10;
end;

procedure TForm1.Timer5Timer(Sender: TObject);
begin
  Sch1 := TImage.Create(Paintbox1);
  Sch1.Picture.LoadFromFile('Schuss.bmp');
  Sch1.Left := Geg.Left;
  Sch1.Top := Geg.Top;
  Sch1.Parent := Form1;
  Timer3.Enabled := true;
end;
Ich weiß, manches könnte man wahrscheinlich viel einfacher schreiben.

Die Muhkuh 26. Nov 2003 18:19

Re: Selbst erzeugtes Image bleibt "hängen" wenn ma
 
*schieb*


Das Problem besteht immer noch! Leider :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 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