Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 04.08.2010, 09:40 Titel: Mausgeschwindigkeit |
|
|
Hey
Ich suche einen Befehl, der die Geschwindigkeit der Maus zurück gibt.
Also einen Befehl, den man mit MouseXSpeed vergleichen kann. Gibt es sowas in FreeBasic? |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 04.08.2010, 10:23 Titel: |
|
|
Selber bauen.
Stichwörter: Maus abfragen, alte Koordinaten, Grundrechenarten... |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 04.08.2010, 11:51 Titel: |
|
|
Ich habe jetzt eine Lösung gefunden, allerdings ist es sehr langsam und es hackt ziemlich nach:
Code: |
Dim As Integer x, y, buttons
Dim As Integer oldx, oldy
Dim As Double newTime = 0, oldTime = 0, diffTime
Screen 18
Do
oldx = x
oldy = y
GETMOUSE x, y,, buttons
oldTime = newTime
newTime = Timer
diffTime = newTime - oldTime
Locate 1, 1
If x < 0 Then
Print "Mouse not available or not on window"
Else
Print Using "Mouse position: ###:### Buttons: "; x; y;
If buttons And 1 Then Print "L";
If buttons And 2 Then Print "R";
If buttons And 4 Then Print "M";
Print " "
Print " "
Print "Mouse xChange:"; x - oldx; " "
Print "Mouse yChange:"; y - oldy; " "
Print Using "Time interval: #.##"; diffTime
Print Using "Mouse xSpeed (xChange / time interval): ####.##"; (x - oldx) / diffTime;
Print " "
Print Using "Mouse ySpeed (yChange / time interval): ####.##"; (y - oldy) / diffTime;
Print " "
End If
Sleep 100
Loop While Inkey$ = ""
End |
Wie kriege ich das schneller hin? |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.08.2010, 12:09 Titel: |
|
|
wie willst du mit nem programm die mausgeschwindigkeit messen? mit dem programm kannst du höchstens messen wie schnell der user seine maus schiebt, aber doch nicht wie groß die übersetzung von mausbwewegung auf cursor-bewegung ist Oo _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 04.08.2010, 12:28 Titel: |
|
|
Code: | PRINT USING "Mouse xSpeed (xChange / TIME interval): ####.##"; (x - oldx) / diffTime;
PRINT USING "Mouse ySpeed (yChange / TIME interval): ####.##"; (y - oldy) / diffTime; |
Damit kann man tatsächlich prüfen, wie schnell die Maus ist. Es erfüllt den selben Zweck wie "MouseXSpeed" und "MouseYSpeed" wie in BlitzBasic.
Mittlerweile habe ich aber den Fehler entdeckt, es lag nicht an dem oben stehenden Code.  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 04.08.2010, 18:45 Titel: |
|
|
/edit scho gut  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 04.08.2010, 18:50 Titel: |
|
|
Mag sein, aber das entspricht nunmal den Befehlen "MouseXSpeed" und "MouseYSpeed" und mehr wollte ich ja nicht  |
|
Nach oben |
|
 |
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 04.08.2010, 20:59 Titel: |
|
|
westbeam, du könntest die funktionen selbst schreiben und static machen.
dadurch kannst du zwar immer das erste ergebnis nach einer längeren aufrufpause verwerfen, aber wenns kompatibel sein muss...
und n puffer wär nicht schlecht (durchschnittsspeed in den letzten 10 polls) _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
 |
micha
Anmeldungsdatum: 09.12.2005 Beiträge: 72
|
Verfasst am: 05.08.2010, 03:23 Titel: |
|
|
MouseXSpeed gibt "nur" die X-Mouse-Differens seit dem letzem Aufruf zurück.
Da aber die Geschwindigkeit allein von der Häufigkeit des Funktionsaufrufes abhängt
wäre MouseXDiff() eine treffendere Bezeichnung.
Wie auch immer vergiss nicht das GetMouse() im Falle eines Fehlers
z.B. Mouse ist auserhalb des Fensters einen Wert <>0 zurück gibt.
Daher eine 1:1 Übersetzung von MouseXSpeed() müste ungefähr so aussehen.
Micha
Code: | function MouseXSpeed() as integer
static oldx as integer = -1
dim as integer x,y
' erster Aufruf
if oldx=-1 then
' Im Fall eines Fehlers
if GetMouse(oldx,y) then oldx=-1
return 0
else
' oldx ist gültig
if GetMouse(x,y)=0 then
function = x-oldx
oldx=x
else
' Im Fall eines Fehlers
return 0
end if
end if
end function
screenres 640,480
while inkey=""
locate 1,1
print "dx = " & MouseXSpeed() & " "
sleep 100
wend |
|
|
Nach oben |
|
 |
|