so, ich bin jetzt mal in mich gegangen, und hab drüber meditiert.
ok, es ist ein interessanter gedanke, die aktuelle position um eine erhöhte Delta zu verändern.
ABER!
mit der 37 funktionsaufrufen schießt du dir in die kniescheibe,
zumal du im ersten If bereits ein Relocate ausführst.
außerdem würde ich bei den Ifs nicht <-3 und >3 nehmen, was ist mit kleineren Deltas?
ich finde es nämlich widersinnig, ein Delta von 3 garnicht zu beachten,
dass es effektiv ein 3 bleibt, aber dann aus einem 4 gleich ein 8 zu machen.
um dein Verfahren mal
sauber umzusetzen:
Code: Alles auswählen
ExamineMouse()
MX = MouseX()
MY = MouseY()
MDX = MouseDeltaX()
MDY = MouseDeltaY()
If MDX <> 0
MX + MDX*2
EndIf
If MDY <> 0
MY + MDY*2
EndIf
MouseLocate(MX, MY)
damit sind abfrage und zuweisung sauber zeitlich getrennt und es findet nur eine einzige zuweisung statt.
die gesamtzahl der funktionsaufrufe habe ich auch von 12 auf 5 verringert.
EDIT
und ich seh grad, die Ifs kann man sich auch sparen....
Code: Alles auswählen
ExamineMouse()
MX = MouseX() : MY = MouseY()
MDX = MouseDeltaX() : MDY = MouseDeltaY()
MX + MDX*2 : MY + MDY*2
MouseLocate(MX, MY)
EDIT2
aber dir ist schon klar, dass der einzige vorteil deines vorschlags ist,
dass du dir eine testung des bildschirmrandes sparst?
ob das wirklich performanter ist
a) MouseLocate() und MouseX() und MouseY() aufzurufen
anstatt
b) die Koordinaten zu prüfen
sei noch mal dahingestellt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.