Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Animaciones en Java
Una animacin es la presentacin de imgenes una despus de la otra cada una con ligeras
diferencias respecto a la anterior.
Para que la animacin sea buena, las imgenes se deben presentar con suficiente rapidez, y
los cambios entre las imgenes no deben ser muchos. Una buena animacin har creer a
nuestros ojos que estas imgenes se estn viendo en movimiento.
Cuando la animacin no es buena, la imagen parpadear y destruir la ilusin de
movimiento.
Doble Buffer
Al mostrar imgenes y sobre todo cuando son grandes, stas suelen aparecer a trozos o con
parpadeo. Las aplicaciones Java permiten que los programas dibujen en memoria, para luego
ir mostrando la imagen completa de forma suave.
Este es el proceso conocido como doble-buffering, y tiene dos ventajas fundamentales sobre
el proceso normal de pintar o dibujar directamente sobre la pantalla:
Primero, el usuario ve aparecer de golpe la imagen en la pantalla. Mientras el usuario est
viendo esa imagen, el programa est generando la siguiente para mostrarla de golpe a
continuacin, y as una y otra vez.
Segundo, la tcnica de doble-buffering involucra un objeto Image, que se puede pasar
directamente a varios mtodos. Esta capacidad para manipular objetos Image permite
descomponer las rutinas de dibujo en componentes funcionales, en lugar de un enorme
mtodo paint().
El doble-buffering slo debe usarse para animaciones grficas, no como mtodo normal.
Para utilizar el doble buffering se requiere de un contexto grfico (la zona donde se va a
pintar) y utilizarlo en la declaracin del mtodo paint():
public void paint( Graphics g )
El objeto Graphics g es el contexto grfico. Se utiliza g para realizar todo el dibujo en el
applet. Por ejemplo:
g.drawString( "Hola!",25,25 );
g.drawRect( 15,15,50,10 );
Entonces, Java traduce todo lo que se dibuja en g en imgenes sobre la pantalla. Para
}
public void paint( Graphics g ) {
// Presenta la imagen del buffer
g.drawImage( dobleBuffer,0,0,this );
}
public void titulo() {
// Obtiene la fuente de texto actual y se guarda
Font f = miCG.getFont();
// Selecciona otro color y otra fuente para el ttulo
miCG.setColor( Color.blue );
miCG.setFont( new Font( "TimesRoman",Font.BOLD,20 ) );
miCG.drawString( "Ejemplo de Cuadrado",15,50 );
miCG.drawString( "con Crculos",15,70 );
// Recupera la fuente original
miCG.setFont( f );
}
public void cuadrado() {
int x,y;
// Selecciona otro color para el cuadrado
miCG.setColor( Color.red );
// Dibuja circulos en los lados horizontales
y = 100;
for( x=100; x <= 200; x+=10 )
{
miCG.drawOval( x,y,20,20 );
miCG.drawOval( x,y+100,20,20 );
}
/// Dibuja circulos en los lados verticales
x = 100;
for( y=100; y <= 200; y+=10 )
{
miCG.drawOval( x,y,20,20 );
miCG.drawOval( x+100,y,20,20 );
}
}
public void start() {
// Hace el dibujo off-line
titulo();
cuadrado();
// Muestra la imagen de golpe
repaint();
}
}