Code: Alles auswählen
InitSprite()
InitKeyboard()
InitMouse()
OpenScreen(1280, 1024, 32, "Maus-Test")
timer.l = 0
#waittime = 20
Repeat
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Space)
If ElapsedMilliseconds() - timer > #waittime
timer = ElapsedMilliseconds()
ExamineMouse()
EndIf
Else
ExamineMouse()
EndIf
StartDrawing(ScreenOutput())
Circle(MouseX(), MouseY(), 12, RGB(255, 255, 0))
StopDrawing()
FlipBuffers()
ClearScreen(0)
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End
Allerdings verhält es sich hier genau anders herum, je kleiner die #waittime eingestellt wird desto besser läuft es.
Wie du siehst wird hier bei Betätigen der Leertaste ExamineMouse() nur alle 20ms aktualisiert und das ist das Problem.
Die Maus sollte also wenn möglich ständig aktualisiert und in der Hauptschleife stehen.
Man merkt aber schon ein Hacken wenn die Wartezeit nur auf 0 steht.
Mit der Billig-Dell-Maus, bei der dein Spiel korrekt funktioniert hat, zeigt sich der Fehler bei diesem Code auch wenn du die Wartezeit sehr hoch stellst. Dann merkt man das sie deutlich stärker bei schnellen diagonalen Bewegungen hackt.
Bei 100ms ruckelt der Zeiger zwar sowieso, aber man merkt den Unterschied... also ein kleiner Bugsimulator.