Artigos / Tekever.eu

Artigos de desenvolvimento e opinião em tecnologia.

Secções:

Linux | Windows | .NET / ASP | LAMP | Java | Só Conversa |

 


Applet Multimédia com Eventos do Rato

  2006-08-31




Um dos grandes atractivos das aplicações Applet é de facto a implementação de multimédia (imagem e som).
Neste exemplo práctico além de usarmos uma imagem e um som, associou-se o evento do clicar do rato (mouseClicked) dentro da area definida pela imagem, à musica, de modo a que a esta só toque quando se clica dentro dessa area do ecrã.
Associou-se também o evento de saida do rato da janela da Applet (mouseExited) a que a musica pare de tocar.
Ainda no evento de clique do rato é registada a posição dele, em coordenadas x e y, coordenadas recebidas pelos métodos getX e getY:

  1. coord_x=e.getX();
  2. coord_y=e.getY();
  3.  


Usando o método repaint no final do código relativo ao mouseClicked permite que sempre que haja um novo clique sejam impressos os novos valores de coordenadas x e y no ecrã, isto é no fundo estamos a chamar o paint várias vezes (consoante as vezes que clicamos no rato).

Nota: os ficheiros de som e imagem devem ficar no folder src (source) do nosso projecto.

O código completo é:
SomImagemRato.java

  1. import java.awt.*;
  2. import java.awt.event.MouseEvent;
  3. import java.awt.event.MouseListener;
  4. import java.awt.event.MouseMotionListener;
  5. import java.applet.*;
  6.  
  7. public class SomImagemRato extends Applet implements MouseListener,
  8. {   
  9.    Image imagem;
  10.    AudioClip musica;
  11.    int coord_x, coord_y;
  12.    
  13.    public void init()
  14.    {   
  15.       addMouseListener(this);
  16.       imagem = getImage(getCodeBase(),"johann-sebastian-bach.jpg");      
  17.    }
  18.    
  19.    public void mouseClicked(MouseEvent e)
  20.    {
  21.       coord_x=e.getX();
  22.       coord_y=e.getY();      
  23.       
  24.       if(coord_x <266 && coord_x>10 && coord_y<370 && coord_y>10)
  25.       {
  26.          musica=getAudioClip(getCodeBase(),"bach.wav");
  27.          musica.play();   
  28.       }   
  29.       
  30.       repaint();      
  31.    }
  32.    
  33.    public void mouseExited(MouseEvent e)
  34.    {
  35.       musica.stop();
  36.    }   
  37.    
  38.    // é necessario declarar sempre todos os eventos do rato mesmo que nao se
  39. usem...
  40.    public void mouseEntered(MouseEvent e)
  41.    {}
  42.    public void mouseReleased(MouseEvent e)
  43.    {}      
  44.    public void mouseMoved(MouseEvent e)
  45.    {}
  46.    public void mousePressed(MouseEvent e)
  47.    {}
  48.    public void mouseDragged(MouseEvent e)
  49.    {}
  50.    
  51.    
  52.    public void paint(Graphics apelet)
  53.    {      
  54.       apelet.drawImage(imagem,10,10,this);   
  55.       apelet.drawString("Clicou com o rato em: (" + coord_x + ":" + coord_y +
  56. ")",10,400);
  57.    }   
  58.       
  59.    
  60. }
  61.  
  62.  


O resultado final é:




Escrito por Tânia Penedo
Website do autor: http://www.taniapenedo.com
Dados do autor: Programação multi-plataforma; C#, PHP, Java, MySQL, SQL-Server.

Este artigo disponibiliza os seguintes ficheiros de suporte:

Comentários

Faça um comentário

Comentário

Nome
E-mail

Este comentário só ficará válido depois de fazer clique no link que lhe será enviado já a seguir para o e-mail indicado. Como tal garanta que o seu e-mail está válido e operacional, se não receber o nosso e-mail verifique os seus filtros de SPAM, ou a caixa de Lixo/Trash do seu cliente de e-mail.

 

Avaliar artigo

Avalie este artigo

 



Nome
E-mail

Este voto só ficará contabilizado depois de fazer clique no link que lhe será enviado já a seguir para o e-mail indicado. Como tal garanta que o seu e-mail está válido e operacional, se não receber o nosso e-mail verifique os seus filtros de SPAM, ou a caixa de Lixo/Trash do seu cliente de e-mail.

 

 

 

 

Recomendar este artigo a alguém

Envie a alguém conhecido

De:  
Nome E-mail
 
Para:  
Nome E-mail
Será enviado um link da página deste artigo para o e-mail que indicar como destino.