Ho provato ad usare un java.awt.Robot
come suggerisce AerandiR, ma ci sono stati un paio di problemi in cui mi sono imbattuto, ed è possibile che anche altre persone li incontrino, quindi mi occuperò di elaborare.
Se il tuo obiettivo è mantenere il cursore in una posizione (preferibilmente al centro dello schermo), allora dovrai chiamare qualcosa come robot.mouseMove(width/2, height/2);
alla fine del tuo metodo mouseMoved()
. Con questa implementazione, ogni volta che il mouse viene spostato dal centro, lo Robot
lo sposta di nuovo al centro.
Tuttavia, quando lo Robot
ricentrerà il mouse, il lettore tornerà a dove era. In effetti, il giocatore balbetterà tra la posizione originale e una posizione girata.
Per risolvere questo problema, invece di definire fino a che punto il tuo giocatore attiva la differenza tra dove si trova il mouse e dove si trovava, definirlo come la distanza dal centro.
Come così: turnAmountX += e.getX() - width/2;
Ora, se i Robot
re-centri il mouse, e.getX() - width/2
sarà sempre cedere a zero.
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;
}
.. ma si sa anche che il mouse _isn't_ in movimento, giusto? – sarnold
@sarnold: Penso che il punto * sia che il * mouse * potrebbe ancora muoversi ma il * cursore * non lo è. –
@GregHewgill: esattamente! – user1391664