Las animaciones tienen un gran interés desde diversos puntos de vista. Una imagen vale más que
mil palabras y una imagen en movimiento es todavía mucho más útil. Para presentar o describir
ciertos conceptos el movimiento animado es fundamental. Además, las animaciones o mejor dicho,
la forma de hacer animaciones en Java ilustran mucho la forma en que dicho lenguaje realiza los
gráficos. En estos apartados se va a seguir el esquema del Tutorial de Sun sobre el AWT.
Se pueden hacer animaciones de una fonna muy sencilla: se define el métodopaint() de forma
que cada vez que sea llamado dibuje algo diferente de lo que ha dibujado la vez anterior. De todas
formas, recuérdese que el programador no llama directamente a este método. El programador llama
al método repaintQ, quizás dentro de un bucle while que incluya una llamada al método sleepf) de
la clase Thread (ver Capítulo 6. a partir de la página 125). para esperar un cierto número de
milisegmidos entre dibujo y dibujo (entre frame y frame, utilizando la terminología de las
animaciones). Recuérdese que repaintO llama a updatef) lo antes posible, y que updatef) borra todo
redibujando con el color de fondo y llama a paintQ.
La fonna de proceder descrita da buenos resultados para animaciones muy sencillas, pero
produce parpadeo o flicker cuando los gráficos son un poco más complicados. La razón está en el
propio proceso descrito anteriormente, combinado con la velocidad de refresco del monitor. La
velocidad de refresco vertical de un monitor suele estar entre 60 y 75 herzios. Eso quiere decir que
la imagen se actualiza unas 60 ó 75 veces por segundo. Cuando el refresco se realiza después de
haber borrado la imagen anterior pintando con el color de fondo y antes de que se termine de dibujar
de nuevo toda la imagen, se obtiene una imagen incompleta, que sólo aparecerá terminada en uno de
los siguientes pasos de refresco del monitor. Ésta es la causa del flicker. A continuación se verán
dos formas de reducirlo o eliminarlo.
No hay comentarios:
Publicar un comentario