Nesse tutorial iremos aprender uma das maneiras de como usar os Eventos
do Mouse, é muito semelhante ao tutorial anterior de Eventos do
Teclado, para o nosso tutorial de hoje utilizaremos duas Interfaces: MouseListener e MouseMotionListener.
(Criem um pacote tutorial13 no nosso projeto JAVAGAMES2D com o arquivo Game.java)
Muito bem....Vamos lá!
A primeira coisa a ser feita é implementar as interfaces na nossa Classe Game.java
1: public class Game extends JFrame implements MouseListener, MouseMotionListener{
Lembrem de adicionar a implementação dos métodos dessas interfaces, observem que podemos implementar quantas interfaces quisermos, bastando apenas separar por virgula, então é possível usar eventos de teclado e mouse num mesmo jogo...
Agora veja os método que serão implementados no final da Classe Game.java:
1: @Override
2: public void mouseClicked(MouseEvent e) {
3: // TODO Auto-generated method stub
4: }
5: @Override
6: public void mouseEntered(MouseEvent e) {
7: // TODO Auto-generated method stub
8: }
9: @Override
10: public void mouseExited(MouseEvent e) {
11: // TODO Auto-generated method stub
12: }
13: @Override
14: public void mousePressed(MouseEvent e) {
15: // TODO Auto-generated method stub
16: }
17: @Override
18: public void mouseReleased(MouseEvent e) {
19: // TODO Auto-generated method stub
20: }
21: @Override
22: public void mouseDragged(MouseEvent e) {
23: // TODO Auto-generated method stub
24: }
25: @Override
26: public void mouseMoved(MouseEvent e) {
27: // TODO Auto-generated method stub
28: }
Recomendo apagar esses comentários gerados (caso você tenha mandado gerar automaticamente), Muito bem... vamos lá....
Os métodos mouseMoved() e mouseDragged() são da interface MouseMotionsListener, e os outros métodos são de MouseListener, bem... vejamos para quê serve cada um desses eventos:
mouseMoved(): é acionado todo vez que você mover o mouse.
mouseDragged(): é acionado toda vez que você clica segura e arrasta.
mouseReleased(): é acionado quando você libera o clique.
mousePressed(): é acionado no momento em quê o clique é pressionado e mantamos pressionado.
mouseExited(): é acionado quando o cursor é retirado de cima de um elemento.
mouseEntered(): é acionado quando o cursor ficar sobre um elemento.
mouseClicked(): é acionando quando clicamos com o mouse.
Agora a próxima etapa é adicionar um escutador para esses eventos no nosso JFrame dentro do método inicializar(), se não adicionarmos esses escutadores nenhum desses métodos serão executados quando os eventos forem acionados (lembrando, o escutador é que manda executar esses métodos quando o evento for acionado).
Observe o código abaixo:
1: public void inicializar() {
2: setTitle("Titulo do Jogo!");
3: setSize(janelaW, janelaH);
4: setResizable(false);
5: setDefaultCloseOperation(EXIT_ON_CLOSE);
6: setLayout(null);
7: setVisible(true);
8: backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);
9: //AQUI ESTAMOS ADICIONANDO OS ESCUTADORES DE EVENTOS DO MOUSE
10: addMouseListener(this);
11: addMouseMotionListener(this);
12: }
Muito simples! não é?
Agora vamos ver um exemplo de uso de eventos do mouse, no nosso exemplo iremos mover uma mira, exibir as coordenadas do cursor no JFrame e quando clicarmos exibir uma mensagem!
(LEIAM OS COMENTÁRIOS DO CÓDIGO COM ATENÇÃO)
1: import java.awt.*;
2: import java.awt.event.KeyEvent;
3: import java.awt.event.KeyListener;
4: import java.awt.event.MouseEvent;
5: import java.awt.event.MouseListener;
6: import java.awt.event.MouseMotionListener;
7: import java.awt.image.BufferedImage;
8: import java.io.File;
9: import javax.swing.ImageIcon;
10: import javax.swing.JFrame;
11: import javax.swing.JOptionPane;
12: public class Game extends JFrame implements MouseListener, MouseMotionListener{
13: BufferedImage backBuffer;
14: int FPS = 30;
15: int janelaW = 500;
16: int janelaH = 500;
17: //VARIAVEIS QUE VAMOS UTILIZAR
18: //UMA IMAGEM PARA REPRESENTAR A MIRA
19: //E AS SUAS COORDENADAS X e Y
20: //NÃO SE ESQUEÇA DE OLHAR O MÉTODO desenharGraficos()
21: //e os métodos de eventos que é onde iremos tratar algumas coisas
22: ImageIcon mira = new ImageIcon("src/tutor13/mira.png");
23: int xMira;
24: int yMira;
25: public void atualizar() {
26: }
27: public void desenharGraficos() {
28: Graphics g = getGraphics(); //ISSO JÁ ESTAVA AQUI
29: Graphics bbg = backBuffer.getGraphics();//ISSO TAMBÉM JÁ ESTAVA AQUI...
30: bbg.setColor(Color.WHITE);
31: bbg.fillRect(0, 0, janelaW, janelaH); //PINTA O FUNDO COM UM QUADRADO BRANCO
32: bbg.setColor(Color.RED);
33: bbg.setFont(new Font("helvica",Font.BOLD,20));
34: bbg.drawString("X=: "+xMira+" Y="+yMira, 50, 100); //EXIBE UM TEXTO + O VALOR DA TECLA PRESSIONADA
35: //QUE ESTÁ NA VARIÁVEL teclaPressionada
36: //AQUI DESENHAMOS A MIRA, O -25 É PARA FICAR CENTRALIZADA COM O CURSOR
37: bbg.drawImage(mira.getImage(), xMira-25, yMira-25, this);
38: //==================================================================================
39: g.drawImage(backBuffer, 0, 0, this);//OBS: ISSO DEVE FICAR SEMPRE NO FINAL!
40: }
41: public void inicializar() {
42: setTitle("Titulo do Jogo!");
43: setSize(janelaW, janelaH);
44: setResizable(false);
45: setDefaultCloseOperation(EXIT_ON_CLOSE);
46: setLayout(null);
47: setVisible(true);
48: backBuffer = new BufferedImage(janelaW, janelaH, BufferedImage.TYPE_INT_RGB);
49: //AQUI ESTAMOS ADICIONANDO OS ESCUTADORES DE EVENTOS DO MOUSE
50: addMouseListener(this);
51: addMouseMotionListener(this);
52: }
53: public void run() {
54: inicializar();
55: while (true) {
56: atualizar();
57: desenharGraficos();
58: try {
59: Thread.sleep(1000/FPS);
60: } catch (Exception e) {
61: System.out.println("Thread interrompida!");
62: }
63: }
64: }
65: public static void main(String[] args) {
66: Game game = new Game();
67: game.run();
68: }
69: public void mouseClicked(MouseEvent e) {
70: JOptionPane.showMessageDialog(null, "Você clicou!!!!");
71: }
72: public void mouseEntered(MouseEvent e) {
73: }
74: public void mouseExited(MouseEvent e) {
75: }
76: public void mousePressed(MouseEvent e) {
77: }
78: public void mouseReleased(MouseEvent e) {
79: }
80: public void mouseDragged(MouseEvent e) {
81: }
82: public void mouseMoved(MouseEvent e) {
83: //AQUI X e Y DA MIRA RECEBE AS COORDENADAS DO CURSOR
84: xMira = e.getX();
85: yMira = e.getY();
86: }
87: }
Veja como ficou:
Muito simples não é ?
Até o próximo tutorial!!! não deixem de comentar ou tirar duvidas! (assim que dé, respondo!!!)
Nenhum comentário:
Postar um comentário