Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Bild mit Maus verschieben! (https://www.delphipraxis.net/156972-bild-mit-maus-verschieben.html)

xxsasch4xx 22. Dez 2010 16:54

Bild mit Maus verschieben!
 
Wie kann man mit Delphi ein Spiel programmieren wo man auf ein Bild klicken kann und das in einem bestimmten Feld verschieben kann?
Also wenn man z.B. die Maus nach rechts macht, dass dann zeitgleich auch das Bild nach rechts geht.

http://www.kostenlosespiele-online.c...ario_Game.html
So ähnlich wie bei dem Programm aber erstmal nur für ein einziges Bild.
Ich muss ja irgendwie ein Feld dafür erstellen was die Bewegungen der Maus mit bekommt und demnach reagieren kann.

Oder würdet ihr mir eine andere Programmiersprache als Delphi für solche Spielereien empfehlen?

Deep-Sea 22. Dez 2010 16:57

AW: Bild mit Maus verschieben!
 
Schau dir mal die Ereignisse OnMouseDown und OnMouseUp einer TImage-Komponente an, sowie Mouse.Pos (heißt doch so, oder?) bzw. alternativ die Funktion GetCursorPos.

DeddyH 22. Dez 2010 17:30

AW: Bild mit Maus verschieben!
 
Als kleiner Denkanstoß: http://www.delphipraxis.net/140096-f...rschieben.html

Aphton 22. Dez 2010 17:51

AW: Bild mit Maus verschieben!
 
Klatsch ne Shape (Shape1) auf die Form und füge diesen Code ein...

Delphi-Quellcode:
  TForm1 = class(TForm)
    Shape1: TShape;
    procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
      Y: Integer);
    procedure Shape1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
      Y: Integer);
    procedure Shape1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  private
    { Private-Deklarationen }
  public
    sh1MouseDown: Boolean;
    sh1MousePos: TPoint;
  end;

{...}

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  sh1MouseDown := True;
  sh1MousePos := Point( X, Y );
end;

procedure TForm1.Shape1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if sh1MouseDown then
  begin
    Shape1.Left := Shape1.Left + X - sh1MousePos.X;
    Shape1.Top := Shape1.Top + Y - sh1MousePos.Y;
  end;
end;

procedure TForm1.Shape1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  Y: Integer);
begin
  sh1MouseDown := False;
end;
Ersetze anschließend Shape mit Image...

MfG

xxsasch4xx 21. Jan 2011 14:03

AW: Bild mit Maus verschieben!
 
kann man das hier:
Delphi-Quellcode:
Shift: TShiftState;
nicht raus lassen?
hab es versucht aber er sagt dann immer dass es nicht gehn würde weil nicht genügend parameter drin sind
aber die shift taste brauch ich ja nicht wirklich warum muss ich sie dann umbedingt deklarieren?

Aphton 21. Jan 2011 14:06

AW: Bild mit Maus verschieben!
 
Weil das Event so deklariert ist. Diese Methoden darfst du nicht per Hand anlegen (falls du es tust, dann müsstest du im OnCreate diese Einzeln den OnX Events des Shapes zuweisen).
Gugg einfach mal beim Objektinspektor!


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