Mouse
1 - Usando o mouse.
Um objeto da classe Window, além de uma instância da classe Keyboard, também fornece uma da classe Mouse. Para ter acesso a este objeto, utilize o seguinte procedimento:
Mouse mouse = janela.getMouse();
Assim como no teclado, os botões do mouse também possuem comportamentos que, caso necessário, podem ser mudados. Porém, não é possível adicionar ou retirar botões.
2 - Botões padrões do mouse
Os botões padrões são os seguintes: BUTTON_LEFT, BUTTON_MIDDLE e BUTTON_RIGHT. Para acessar o código desses botões faça: Mouse.BUTTON_RIGHT, para o botão direito, por exemplo.
Todos os botões padrões possuem o comportamento DETECT_INITAL_PRESS_ONLY.
3 - Mudando o comportamento de um botão.
Para alterar o comportamento de um botão use o método:
public void setBehavior(int numberBotton, int behavior);
Os parâmetros a serem passados são: o código do botão a ser mudado e o comportamento pretendido.
Exemplo: Mudando o comportamento do botão direito:
mouse.setBehavior(Mouse.BUTTON_RIGHT, Mouse.DETECT_EVERY_PRESS);
Agora, enquanto o botão direito estiver pressionado, o método boolean isRightButtonPressed(), descrito abaixo, irá retornar true.
4 - Botões pressionados
Para saber se um botão está pressionado use os seguintes métodos da classe Mouse:
//Retorna true se o botão esquerdo está pressionado, ao contrário, retorna false. public boolean isLeftButtonPressed(); //Retorna true se o scroll está pressionado, ao contrário, retorna false. public boolean isMiddleButtonPressed(); //Retorna true se o botão direito está pressionado, ao contrário, retorna false. public boolean isRightButtonPressed ();
5 - Recuperando a posição do mouse
Para recuperar a posição (x,y) do mouse na tela usamos use o método abaixo presente na classe Mouse:
public Point getPosition();
Exemplo: Point posicaoMouse = mouse.getPosition();
A classe Point, existente no Java, serve para guardar os valores de (x,y) retornados pelo método getPosition(). valores são acessados da seguinte forma: ‘posicaoMouse.x ‘ e ‘posicaoMouse.y’.
6 - Mouse sobre algum objeto do jogo.
Para saber se o mouse está sobre algum objeto do jogo, use o método presente na classe Mouse:
//Retorna true se o mouse estiver sobre o objeto passado como parâmetro, //caso contrário, retorna false. public boolean isOverObject(GameObject obj);
O objeto passado como parâmetro pode ser um dos seguintes objetos: GameObject, GameImage, Animation ou Sprite.
Exemplo:
Mouse mouse = janela.getMouse(); Sprite carro = new Sprite("carro.png"); if (mouse.isOverObject(carro)) System.out.println("mouse está sobre o carro!"); else System.out.println("mouse NÃO está sobre o carro!");
7 - Mouse sobre uma determinada área
Para saber se o mouse está sobre uma determinada área da tela use o método presente na classe Mouse:
//Retorna true se o mouse está sobre a área, retorna falso ao contrário. public boolean isOverArea(Point start, Point end);
Ao lado está representada uma área com 45 pixels de altura e 237 pixels de largura.
Seus pontos mínimo e máximo são (0,0) e (45,237).
Para saber se o mouse está sobre está área, utilize o seguinte procedimento:
Point pontoMinimo = new Point(0,0); Point pontoMaximo = new Point(45,237); if (mouse. isOverArea(pontoMinimo, pontoMaximo )) imprime("Mouse está sobre a área"); else imprime("Não está sobre a área!")
No lugar de boolean isOverArea(Point start, Point end) poderíamos ter usado o método a seguir que ainda teriamos o mesmo resultado:
public boolean isOverArea (int minX, int minY, int maxX, int maxY);
Usando o método boolean isOverArea (int minX, int minY, int maxX, int maxY), teríamos:
if (mouse. isOverArea(0, 0, 45, 257 )) imprime("Mouse está sobre a área");
Exemplo: Ao clicar com o mouse a imagem muda de posição.
package Mouse001; import java.awt.Point; import jplay.GameImage; import jplay.Keyboard; import jplay.Mouse; import jplay.Window; /** * @author Gefersom Cardoso Lima * Federal Fluminense University - UFF - Brazil * Computer Science */ public class Mouse001 { public static void main(String[] args) { Window janela = new Window(800,600); Keyboard keyboard = janela.getKeyboard(); Mouse mouse = janela.getMouse(); GameImage backGround = new GameImage("fundo.png"); GameImage imagem = new GameImage("megaMan.png"); boolean executando = true; while(executando) { backGround.draw(); imagem.draw(); janela.update(); //If the left button clicked the image will appear where there was the click. if (mouse.isLeftButtonPressed() == true) { Point posicao = mouse.getPosition(); imagem.x = posicao.x; imagem.y = posicao.y; } if ( keyboard.keyDown(Keyboard.ESCAPE_KEY) == true) executando = false; } janela.exit(); } }
Obs.: A ordem em que as imagens são desenhas é importante. Se desenharmos primeiro a 'imagem' e depois o backGround, a 'imagem' será sobreposta.
UFF - Universidade Federal Fluminense - Institudo de Computação - Ciência da Computação