Ich versuchte mit einer java.awt.Robot
, wie AerandiR suggeriert, aber es gab ein paar Probleme, die ich lief, und es ist möglich, dass andere Leute in sie auch laufen werden, so werde ich erarbeiten.
Wenn es Ihr Ziel ist, den Cursor in einer Position zu halten (vorzugsweise in der Mitte des Bildschirms), sollten Sie am Ende Ihrer mouseMoved()
Methode so etwas wie robot.mouseMove(width/2, height/2);
aufrufen. Bei dieser Implementierung wird die Maus jedes Mal, wenn die Maus aus der Mitte verschoben wird, wieder in die Mitte zurückbewegt.
Wenn jedoch die Robot
die Maus neu zentriert, wird der Spieler wieder dorthin zurückkehren, wo er war. In der Tat wird der Spieler zwischen der ursprünglichen Position und einer gedrehten Position stottern.
Um dies zu beheben, definieren Sie den Abstand von der Mitte, anstatt zu definieren, wie weit Ihr Player den Unterschied zwischen der Position der Maus und ihrem aktuellen Standort aktiviert.
Wie so: turnAmountX += e.getX() - width/2;
Wenn nun die Robot
Wieder Zentren der Maus, wird e.getX() - width/2
immer Null ergeben.
Recap:
void mouseMoved(MouseEvent e) {
turnAmountX += e.getX() - width/2;
turnAmountY += e.getY() - height/2;
robot.mouseMove(this.getLocationOnScreen().x + width/2,
this.getLocationOnScreen().y + height/2;
}
.. aber Sie wissen auch, dass die Maus _isn't_ bewegende, nicht wahr? – sarnold
@sarnold: Ich denke, der Punkt ist, dass die * Maus * könnte immer noch bewegen, aber der * Cursor * ist nicht. –
@GregHewgill: genau! – user1391664