Criando um Applet animado usando Java

Já aqui no INFOmoz falamos acerca dos Java Applets num artigo anterior. Neste artigo criamos um Applet básico que mostrava rectangulos na tela do browser. Mas Applets são usados,geralmente, para criar animações e interações entre ás páginas que as contém e o utilizador que visualiza. Por isso, vamos neste artigo adicionar alguma animação á nossa Applet anterior, ou melhor, vamos criar um Applet novo baseado no anterior, no qual adicionaremos um rectângulo que se move na tela. Este rectângulo será o rectângulo do centro do Applet anterior.Para isso implementaremos uma simples máquina de estado, usando o método atualiza().O rectângulo possui quatro estados de movimento: cima,baixo,esquerda,direita, e quando um estado atinge o limite o rectângulo terá de passar para outro estado. Máquinas de estado também são usadas para definir o comportamento de objectos que se movem nos jogos electrónicos. Vamos ver o código da nossa classe AppletAnimado:

import java.applet.*;import java.awt.*;public class AppletAnimado extends Applet implements Runnable{   Thread animacao;   int locx,locy; // localização do rectângu   int larg, alt; // dimensões do rectangulo   static final byte CIMA = 0; // Direcção do movimento   static final byte BAIXO = 1;   static final byte ESQUERDA = 2;   static final byte DIREITA = 3;   byte estado; // Estado actual   // Tempo de paragem   static final int REFRESH_RATE = 100; // em milisegundos   // Métodos do Applet:   public void init()   {       System.out.println(">> inicinando <<");        setBackground(Color.black);       locx = 80; // Parâmetros do rectângulo do centro        locy = 100;        larg = 110;         alt = 90;        estado = CIMA;     }     public void start()     {         System.out.println(">> start <<");         animacao = new Thread(this);         if (animacao != null) { animacao.start(); }     }     public void paint(Graphics g)     {         System.out.println(">> Desenhando <<");         g.setColor(Color.yellow);         g.fillRect(0,0,90,90);         g.fillRect(250,0,40,190);         g.fillRect(80,110,100,20);         // Rectângulo invisivel         g.setColor(Color.blue);         g.fillRect(80,200,220,90);         g.fillRect(100,10,90,80);         g.setColor(Color.lightGray);         g.fillRect(locx,locy,larg,alt);         g.setColor(Color.red);         g.fillRect(200,0,45,45);          g.fillRect(0,100,70,200);         g.setColor(Color.magenta);         g.fillRect(200,55,60,135);      }      // Atualiza o rectângulo do centro      void atualiza()     {         switch (estado)        {           case BAIXO: locy += 2; if (locy >= 110)   {      estado = CIMA; } break;case CIMA: locy -= 2; if (locy <= 90) { estado = DIREITA; }break;case DIREITA:locx += 2; { estado = ESQUERDA; } break;case ESQUERDA: locx -= 2; if (locx <= 70){estado = BAIXO;}break;}}public void run(){while (true){repaint();atualiza();try{Thread.sleep (REFRESH_RATE);}catch (Exception exc) { };}}public void stop() { System.out.println(">> Parar <<"); if (animacao != null) { animacao.stop(); animacao = null; } } }

Para executar este Applet, você precisará de um arquivo HTML igual ao do Applet do artigo anterior. Crie este arquivo e referêncie nele a classe AppletAnimado emAqui está um exemplo completo de uma página HTML que pode executar o nosso Applet acima(desde que a página e o arquivo AppletAnimado.class estejam no mesmo diretório):

<html><head></head><body bgcolor="000000">    <center>    <applet       code    = "AppletAnimado.class"       width    = "500"       height    = "300"    >    </applet>    </center></body></html>

Este Applet é idêntico ao criado no artigo Anterior, com a excepção do método run(). Este método é o responsável por todo o processo de animação, invocando métodos herdados da classe base Applet(Applet Animado deriva de Applet, notou!!!), e ainda métodos locais da classe AppletAnimado, como atualiza(). No próximo artigo, que sai brevemente, veremos como funciona cada linha deste método, analisando o Ciclo Universal da Animação para o nosso AppletAnimado.Por agora, considere subscrever-se ao nosso RSS Feed , para receber as atualizações deste portal.

Receba nossas actualizações por email

Ver Campanhas anteriores.

(Visited 71 times, 1 visits today)
Share