Eliminar el Parpadeo
El parpadeo que podrías haber observado en el ejemplo de la página anterior es un problema común con la animación (y ocasionalmente con los gráficos estáticos). El efecto de parpadeo es el resultado de dos factores:
- Por defecto, el fondo de la animación es limpiado (se redibuja su área completa con el color de fondo) antes de llamar al método paint().
- El cálculo del método paint() del ejemplo anterior es tan largo que utiliza más tiempo en calcular y dibujar cada marco de la animación que el ratio de refresco de la pantalla. Como resultado, la primera parte del marco se dibuja en un pase de refresco de vídeo, y el resto del marco se dibuja en el siguiente (o incluso el siguiente al siguiente). El resultado es que aunque la primera parte del marco se anima normalmente (usualmente), puede ver una ruptura entre la primera y la segunda parte, ya que la segunda parte están en blanco hasta el segundo pase.
Se puede utilizar dos técnicas para eliminar el parpadeo: sobreescribir el método update() e implementar doble buffer.
Sobreescribir el método update()
Para eliminar el parpadeo, tanto si se utiliza como si no el doble buffer, debe sobreescribir el método update(). Esto es necesario, porque es la única forma para prevenir que fondo del componente sea limpiado cada vez que se dibuja el componente.
Implementar el Doble Buffer
Doble buffer implica realizar múltiples operaciones gráficas en un buffer gráfico que no está en la pantalla, y luego dibujar la imagen resultante en la pantalla.
El doble buffer evita que las imágenes incompletas se dibujen en la pantalla.
Ozito