• 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);
    area

    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