Académique Documents
Professionnel Documents
Culture Documents
Programación Avanzada
El Juego (parte 3)
Ampliación de técnicas y mecanismos
Pintado en Java
Existencia de 3 métodos en todo componente java.
repaint()
invocado cuando se necesita repintar un componente
Automático al cambiar algo de un componente normal (JTable, JButton, etc).
Debe invocarse si hay cambios en los datos a dibujar (Canvas y similares).
Avisa a la JVM que el componente necesita repintado. El método en sí mismo no
borra ni dibuja nada. La máquina virtual encola dicha petición en su cola de
eventos de pantalla, junto a eventos de teclado y ratón. Cuando llegue el
momento, se comienza el redibujado en un hilo distinto, el hilo de awt.
update(Graphics g)
Llamado cuando la JVM decide repintar el componente. Por defecto, borra el
componente por completo, rellenándolo con un rectángulo del tamaño de
componente y del color de fondo. Después, se llama a paint(Graphics g).
paint(Grahics g)
Es el que realmente dibuja el componente.
Estrategias de pintado
Redefinir paint()
Es simple pero, en general, produce parpadeo.
DobleBuffering
Ejemplo 1 de DobleBuffering
Necesario porque el
objeto usado no
pertenece a los
JComponent
Ejemplo 2 de DobleBuffering
En objetos que
pertenecen al tipo
JComponent debe
activarse el uso del
Doble Buffer
Es simple, el inconveniente
surge con objetos de contorno
no rectangular (como en la
figura inferior)
Comprendiendo a Iterator
Problema y Solución
Problema
Se necesita de una interfaz uniforme para recorrer distintos tipos
de estructuras de agregación, con diversas formas de recorrer
los objetos incluidos sin exponer su estructura.
Solución
Ejemplo de Implementación
Bibliografía
Principal
DEITEL, F. y DEITEL, H. (2008). Cómo programar en Java. 7ma edición. Capítulo 12.
México: Prentice Hall. Pearson Education.
KNUDSEN, J. (1999). Java 2D Graphics. EEUU: O’Reilly y asociados.
KLAWONN, F. (2008). Introduction to Computer Graphics, using Java 2D and 3D. Inglaterra:
Ed. Springler-Verlag.
Referencias Complementarias
http://razonartificial.com/programar-videojuegos/
http://www.cursodesarrollovideojuegos.com/
http://es.wikipedia.org/wiki/Iterador_(patr%C3%B3n_de_dise%C3%B1o)
http://chimera.labs.oreilly.com/books/1234000001805/ch20.html
http://www.jorgesanchez.net/programacion/manuales/Java.pdf
http://personales.unican.es/corcuerp/java/Slides/GUIs_AWT_Swing.pdf
http://www.agserrano.com/libros/j2me/[ebook]Programacion%20J2ME.pdf
http://www.jlabstudio.com/webgl/category/programacion/webgl/