Animacion Relog en Java Con Imagenes

Capturas 





Codigo

package relog03dic09;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 *
 * @author Master
 */
public class AnimadorLogo extends JPanel
        implements ActionListener{
    protected ImageIcon imagenes[]; // declaramos un arreglo de imagenes
    protected int totalImagenes=24, //variable de tipo entero ultima imagen
            imagenActual=0, // variable de tipo entero primera imagen
            retardoAnimacion=1500; //1500 milisegundos de retardo
    protected Timer cronoAnimacion; // variable de tipo tiempo
    public AnimadorLogo() // constructor
    {
        setSize(getPreferredSize()); // toma el valor de las dimenciones de la imagen
        imagenes=new ImageIcon[totalImagenes]; // manda una instancia al arreglo de imagenes
        for(int i=0; i<imagenes.length; ++i) // se hace un incremento en i empesando de 0 de 1 en 1 hasta el valor asignado a la variable totalImagenes
            imagenes[i]=
                    new ImageIcon("imgrelog/relog"+i+".gif"); // genera un nombre para la imagen y lo va cambiando dependiendo el valor de i
        iniciaAnimacion(); // manda a llamar el metodo iniciaAnimacion que esta mas abajo
            }
public void paintComponent(Graphics g)
{
        super.paintComponent(g);//inicia los componentes del metodo graphics
if(imagenes[imagenActual].getImageLoadStatus()==MediaTracker.COMPLETE){//va cambiando la imagen
    imagenes[imagenActual].paintIcon(this, g, 0, 0);// imprime la imagen en las cordenandas 0,0
            imagenActual=(imagenActual+1)%totalImagenes;// cuando la imagen llega a la ultima regresa al principio
}


}
public void actionPerformed(ActionEvent e)
{
    repaint();// actualiza la ventana para que no se amontonen las imagenes
}
public void iniciaAnimacion()
{
    if(cronoAnimacion ==null){
        imagenActual=0;
        cronoAnimacion = new Timer(retardoAnimacion, this);
        cronoAnimacion.start();
    }
    else
        if(!cronoAnimacion.isRunning())
            cronoAnimacion.restart();
}
public void terminaAnimacion()
{
    cronoAnimacion.stop();
}
public Dimension getMinimumSize()
{
    return getPreferredSize();
}
public Dimension getPreferedSize()
{
    return new Dimension(500,500);
}
public static void main(String args[])
{
    AnimadorLogo anim = new AnimadorLogo();
    JFrame app = new JFrame("Master Animacion");
    app.getContentPane().add( anim, BorderLayout.CENTER);
    app.addWindowListener(new WindowAdapter(){
        public void windowClosing(WindowEvent e)
        {
            System.exit(0);
        }
    }
    );
    app.setSize ( anim.getPreferredSize().width+58+250,
            anim.getPreferredSize().height+80+250);
    app.show();
}
}
Descargar Proyecto

No hay comentarios.:

Publicar un comentario