Pergunta
Eu estou escrevendo um jogo em Java, e precisam ter uma interação mouse. Eu ia usar MouseAdapter, mas eu olhei para ela alguns, e não parecem ter qualquer meio de determinar a localização do ponteiro do mouse sem um clique ou ação que está sendo feito ... Qual seria a maneira recomendada de fazendo isso?
algumas perguntas a:
-
Será que o rato "location" referem-se à localização do mouse em relação aos limites do monitor, os limites do jogo, ou seria representado como movimentos em relação a uma localização anterior?
-
Como seria desativar o ponteiro do mouse em um janela aplicação? (Ie. Um shooter em primeira pessoa onde os movimentos do mouse gira os jogadores ver ao invés de mover um ponteiro) Isso é possível?
Solução
Olhe para o MouseMotionListener . Isso permitirá que você acompanhe os movimentos do mouse. Ele lhe dará a localização do mouse no componente que está anexado. Mas se você olhar para SwingUtilities classe existe alguns métodos de conveniência para os pontos de converter para a tela ou outros componentes ou o monitor.
Para o cursor, você tem a opção de definir o seu próprio bitmap para o cursor, você pode olhar aqui . Ou para uma resposta SO mais recente, você pode olhar aqui . Assim, você poderá ocultar o cursor, ou defini-lo como um bitmap vazio e, em seguida, interceptar os movimentos do mouse e eventos para controlar o seu ponto de vista.
Outras dicas
Um tutorial sobre os eventos do mouse está em: http://java.sun.com/docs/books/ tutorial / uiswing / eventos / mouselistener.html
Se você olhar aqui: http://java.sun.com/ JavaSE / 7 / docs / api / java / awt / evento / MouseEvent.html
Você pode obter a localização absoluta, na tela, ou coordenadas relativas ao componente.
Se houver um movimento para mudar de direção, então você precisará remover o ouvinte rato, ou você pode simplesmente ter alguma lógica, onde o manipulador de eventos só vai sair, não fazer nada. Eu acho que isso seria melhor, caso contrário, você tem que manter o controle de quando você adicionar e remover os ouvintes.