Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Maus verlangsamen (https://www.delphipraxis.net/117523-maus-verlangsamen.html)

Die Muhkuh 19. Jul 2008 19:42

Re: Maus verlangsamen
 
Was willst Du mir damit sagen?

rollstuhlfahrer 19. Jul 2008 20:39

Re: Maus verlangsamen
 
HI,

ich würd mir den aktuellen Punkt merken und bei einer Mausbewegung den Punkt nur um den halben Abstand ändern.
Du kannst aber auch die Maus ausblenden, musst sie dafür selbst zeichnen. Dadurch kannst du die Bewegungen entsprechend verlangsamen. Dieses Prinzip wird (ohne Verlangsamung) höchtwahrscheinlich auch in Ego-Shootern verwendet, da man sich hier beliebig z.B. nach rechts drehen kann, ohne an einen Bildschirmrand zu stoßen. Nach dem loslassen der Shift-Taste kannst du entweder den Cursor an seiner aktuellen Position wieder auftauchen lassen oder erst verschieben und dann wieder auftauchen lassen.

Bernhard

Medium 20. Jul 2008 03:45

Re: Maus verlangsamen
 
Genau das wollte ich auch grad vorschlagen. In solchen Fällen blende ich meist die Maus aus, und berechne mir "OnMouseMove" die Verschiebung zum vorigen Punkt, und das eigentliche Objekt wird dann nur um ein Bruchteil des Verschiebungsvektors bewegt. Dabei macht es auf jeden Fall Sinn, die Position das zu verschiebenden Teils mit Floats zu speichern und berechnen, und nur zu Anzeigezwecken zu runden.
Da man auch mit ausgeblendetem Cursor noch an den Bildrand stoßen kann (halt nur unsichtbarerweise dann), behelfe ich mir da meist mit einem Timer, der die unsichtbare Maus auf die Bildschirmmitte zurück zieht. 200ms schien dafür ein brauchbarer Wert zu sein, so dass man sich schon sehr anstrengen muss um in der Zeit nen halben Bildschirm zu "überqueren". Und keine Angst: Alle 200ms den Cursor versetzen ist wirklich nichts, was eine CPU groß juckt.

Eleganter wäre es natürlich, wenn man die Maus generell dazu bringen könnte bei Bewegung nur einen Richtungsverktor zu liefern, statt einer Position. Dann fiele das Rücksetzen sowie das eigene Berechnen weg. Jedoch kenne ich bislang keine Möglichkeit dies zu machen. Ich kann mir vorstellen, dass das u.U. mit DirectInput was gibt, aber ich habe auch in Richtung WinAPI noch nicht recherchiert.

rotfc 20. Jul 2008 04:06

Re: Maus verlangsamen
 
Hilft vermutlich nicht, aber vielleicht ein vager Ansatzpunkt zum Weitersuchen:

http://linuxreviews.org/howtos/xfree/mouse_speed_in_x/


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:16 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz