Antes de mostrar el código daremos un pequeño resumen de las funciones que se utilizaron para esta animación.
¿Que es un applet?
Un applet desde el punto de vista de código java lo podemos definir como un pequeño programa diseñado para ser ejecutado en el contexto de una página web y desde el punto de vista de una página html representa una pequeña ventana gráfica dentro de la misma.
Un applet se carga y se ejecuta desde cualquier explorador que soporte java.
Creación de un applet
Para crear un applet, únicamente necesitamos escribir una clase que derive de la clase Applet que se encuentra en el paquete java.applet
Los métodos para crear nuestra animación son los siguientes:
public void init(): este método es llamado una sola vez cuando se carga el applet, es usado generalmente para cargar los componentes del applet, por ejemplo: cargar las imágenes y sonidos, crear los botones, etiquetas, etc.
public void start(): este método sera llamado cada vez que se inicie la ejecución del applet. Esto es después de que se ejecute el método init() y cada vez que se vuelva a mostrar la página web que muestra el applet.
public void stop(): Este método es llamado para informar al applet que su ejecución va a ser detenida. Esto ocurre siempre que la página que muestra el applet es remplazado por otra página y justo antes de que sea destruido.
public void paint(): La clase Applet hereda este método de la clase Container. Es llamado cada vez que es necesario repintar el contenedor del applet, es decir; el área de dibujo. El parámetro g de la clase Graphics que pertenece al paquete java.awt, hace referencia a la ventana gráfica.
Creación de la animación
Para hacer la animación de nuestro applet haremos uso de un hilo (Thread - llamado también proceso ligero o subproceso ) no explicaremos lo que es un hilo, ya que no es nuestra intención alargar mas el tema. Los hilos en java se pueden crear de dos formas:
- Escribiendo una nueva clase derivada de Thread que se encuentra en el paquete java.awt.
- Hacer que una clase existente implemente la interfaz Runnable.
El código es el siguiente:
import java.awt.*;
import java.applet.*;
public class MiApplet extends Applet implements Runnable {
Thread anima; //creación del hilo
int radio=10; //radio de la pelota
int x, y; //posición del centro de la pelota
int dx = 1; //desplazamiento en x
int retardo = 50;
int anchoApplet;
int altoApplet;
public void init(){
setBackground(Color.white);
//dimensiones del applet
anchoApplet = getSize().width;
altoApplet = getSize().height;
//posición inicial de partida
x = anchoApplet/4;
y = altoApplet/2;
}
public void start(){
if(anima == null){
anima= new Thread(this);
anima.start();
}
}
public void stop(){
if(anima != null){
anima = null;
}
}
public void run(){
while (true) {
mover();
try{
Thread.sleep(retardo);
}catch(InterruptedException e){
break;
}
}
}
void mover(){
x += dx;
if (x >= (anchoApplet-radio) || x < radio) dx*= -1;
repaint(); //llama a paint
}
public void paint(Graphics g){
g.setColor(Color.red);
g.fillOval(x-radio, y-radio, 2*radio, 2*radio);
}
}