Intenté usar un java.awt.Robot
como sugiere AerandiR, pero hubo un par de problemas con los que me encontré, y es posible que otras personas se topen con ellos también, así que lo detallaré.
Si su objetivo es mantener el cursor en una posición (preferiblemente en el centro de la pantalla), entonces querrá llamar a algo como robot.mouseMove(width/2, height/2);
al final de su método mouseMoved()
. Con esta implementación, cada vez que se mueve el mouse fuera del centro, el Robot
lo moverá de nuevo al centro.
Sin embargo, cuando el Robot
vuelve a centrar el mouse, el reproductor volverá a estar donde estaba. En efecto, el jugador tartamudeará entre la posición original y una posición girada.
Para solucionar esto, en lugar de definir qué tan lejos su jugador activa la diferencia entre dónde está el mouse ahora y dónde estaba, defínalo como la distancia desde el centro.
así: turnAmountX += e.getX() - width/2;
Ahora bien, si los Robot
Vuelve a centrar el ratón, e.getX() - width/2
siempre dará cero.
Resumen:
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;
}
.. pero también sabrá que el ratón _isn't_ en movimiento, ¿verdad? – sarnold
@sarnold: Creo que el punto es que el * mouse * aún se puede mover, pero el * cursor * no lo está. –
@GregHewgill: ¡exactamente! – user1391664