Tôi đã thử sử dụng java.awt.Robot
như AerandiR đề xuất, nhưng có một số vấn đề tôi gặp phải và có thể những người khác cũng sẽ gặp phải vấn đề đó, vì vậy tôi sẽ giải thích.
Nếu mục tiêu của bạn là giữ con trỏ ở một vị trí (tốt nhất là giữa màn hình), thì bạn sẽ muốn gọi một cái gì đó như robot.mouseMove(width/2, height/2);
ở cuối phương thức mouseMoved()
của bạn. Với việc thực hiện này, mỗi khi chuột được di chuyển ra khỏi trung tâm, các Robot
sẽ di chuyển nó trở lại trung tâm.
Tuy nhiên, khi Robot
căn giữa chuột, trình phát sẽ quay lại vị trí của nó. Trong thực tế, người chơi sẽ nói lắp giữa vị trí ban đầu và vị trí quay.
Để khắc phục điều này, thay vì xác định khoảng cách người chơi của bạn bật sự khác biệt giữa vị trí của con chuột và vị trí của nó, hãy xác định nó là khoảng cách từ trung tâm.
Giống như vậy: turnAmountX += e.getX() - width/2;
Bây giờ, nếu Robot
tái trung tâm chuột, e.getX() - width/2
sẽ luôn mang lại không.
Tóm tắt:
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;
}
.. nhưng bạn cũng sẽ biết rằng chuột _isn't_ di chuyển, phải không? – sarnold
@ sarnold: Tôi nghĩ vấn đề là chuột * vẫn có thể di chuyển nhưng con trỏ * không phải. –
@GregHewgill: chính xác! – user1391664