2009-10-28 6 views
0

J'écris un jeu en Java, et j'ai besoin d'avoir une interaction avec la souris. J'allais utiliser MouseAdapter, mais je l'ai examiné un peu, et il ne semble pas avoir de moyen de déterminer l'emplacement du pointeur de la souris sans un clic ou une action en cours ... Quelle serait la façon recommandée de Ce faisant?Opérations de souris Java

quelques questions:

  1. Est-ce que la souris « emplacement » référence à l'emplacement de la souris par rapport aux limites du moniteur, les limites du jeu, ou serait-il représenté que les mouvements par rapport à un emplacement précédent?

  2. Comment peut-on désactiver le pointeur de la souris dans un fenêtré demande? (c'est-à-dire un jeu de tir à la première personne où les mouvements de la souris font tourner la vue des joueurs plutôt que de déplacer un pointeur) Est-ce possible?

Répondre

3

Regardez le MouseMotionListener. Cela vous permettra de suivre les mouvements de la souris. Il vous donnera l'emplacement de la souris dans le composant auquel il est attaché. Mais si vous regardez SwingUtilities classe il y a quelques méthodes de commodité pour convertir des points à l'écran ou d'autres composants ou le moniteur.

Pour le curseur, vous avez la possibilité de définir votre propre bitmap pour le curseur, vous pouvez regarder here. Ou pour une réponse SO récente, vous pouvez regarder here. Vous pouvez donc masquer le curseur ou le définir sur une image bitmap vide, puis intercepter les mouvements et les événements de la souris pour contrôler votre vue.

1

Un tutoriel sur les événements de la souris est à l'adresse: http://java.sun.com/docs/books/tutorial/uiswing/events/mouselistener.html

Si vous regardez ici: http://java.sun.com/javase/7/docs/api/java/awt/event/MouseEvent.html

vous pouvez obtenir la position absolue, sur l'écran, ou les coordonnées par rapport au composant. S'il y a un mouvement pour changer de direction, alors vous devrez enlever le module d'écoute de la souris, ou vous pouvez juste avoir une logique où le gestionnaire d'événements va juste quitter, ne rien faire. Je pense que ce serait mieux, sinon vous devez garder une trace de quand vous ajoutez et supprimez les auditeurs.