Entwickler-Ecke
Multimedia / Grafik - maussteuerung
axja - Mi 12.03.03 19:44
Titel: maussteuerung
hmm, kann mir zufällig wer helfen, oder sagen wo ich beißpiele bekomme?
ich möchte ein object dazu kriegen dass es sich immer in die richtung der maus bewegt, bis es bei ihr ankommt. wenn möglich solte es sich je weiter die maus weg ist desto schneller bewegen...
ich hab aber absolut keine idee wie ich das (vorallem ersteres) machen kann... vieleicht wer n par tips oder so? :D
Raphael O. - Mi 12.03.03 19:49
wo zeichnest du denn dein Objekt??
auf einem Image??
axja - Mi 12.03.03 21:48
si!
Raphael O. - Do 13.03.03 18:37
wenn du die Position von deinem Objekt auf dem Image weist, dann musst du bei image1.mousedown die Koordinaten des Klicks mit denen des Objekts vergleichen-> den Abstand ausrechen->daraus eine Geschwindigkeit errechnen->Objekt bewegen
axja - Do 13.03.03 19:59
ja, das ginge, danke für die idee, aber dazu brauche ich einen klick... ich möchte aber das es den cursor die ganze zeit verfolgt, wie diese desktop-katze die die ganze zeit hinter der maus herrent, kennst du? :)
aber danke schonmal, vieleicht noch ne idee?
mars - Do 13.03.03 20:00
Du könntest mit einem Timer die Mausposition abfragen.
Andreas Pfau - Do 13.03.03 20:34
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var X, Y: Integer;
procedure TForm1.Timer1Timer(Sender:TObject); begin If (X <> Mouse.CursorPos.X) Or (Y <> Mouse.CursorPos.Y) Then begin X := Mouse.CursorPos.X; Y := Mouse.CursorPos.Y; BildMitNeuenKoordinatenZeichnen(); end; end; |
Oder du machst 'nen Hook. Aber wich würde den Timer arg empfehlen.
torstenheinze - Do 13.03.03 21:04
-1x timer (timer1)
-1x image (image2)
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| procedure TForm1.FormCreate(Sender: TObject); begin form1.DoubleBuffered :=true; end;
procedure TForm1.Timer1Timer(Sender: TObject); var mouseX, mouseY, imageX, imageY, imageH, imageW, MovementX, MovementY, formx, formy: integer; begin imageh := image2.Height; imagew := image2.Width; formx := form1.Left + (imagew div 2)+3; formy := form1.top + (imageh div 2) + 15; mousex := mouse.CursorPos.x - formx; mousey := mouse.CursorPos.y - formy; imagex:= image2.Left; imagey:= image2.top; if imagex < mousex then begin movementx := (imagex - mousex) div 7; imagex :=imagex - movementx; end else if imagex > mousex then begin movementx := (mousex - imageX) div 7; imagex :=imagex + movementx; end; if imagey < mousey then begin movementy := (imagey - mousey) div 7; imagey :=imagey - movementy; end else if imagey > mousey then begin movementy := (mousey - imagey) div 7; imagey :=imagey + movementy; end;
image2.Left := imagex; image2.Top := imagey;
end; |
der code ist net perfect, ich werde ihn noch verbessern
axja - Fr 14.03.03 15:39
JAA, das sind gute ideen, dankeschön! ich werd's gleich probieren!
axja - Fr 14.03.03 15:39
ps: viiiellen DANK!! :wink:
axja - Fr 14.03.03 16:09
hey, leute!
Habs mit nem timer probiert, das war's, es geht!!
danke schön! :D :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!