El Blog de Murphy

30 Agosto 2008

juego en java 2D – 3er dia

Archivado en: Java 2D — Etiquetas:, , , — Julio Cesar Cachay Pérez @ 8:33 am

capitulo 9:

Los cambios hasta aqui son pocos pero algo confusos:

public int vX;//se restara/sumara de la posicion X
public BufferedImage buffer;// objeto del tipo bufferedimage

buffer = new BufferedImage(WIDTH,HEIGHT, BufferedImage.TYPE_INT_RGB);
//si no me equivoco, lo que se esta haciendo aca es creando una imagen
//como la clase paint que heredamos de canvas ya no va a ser usada (mirar abajo)
// creamos una imagen nueva de la ventana y esta es la que vamos a modificar

ventana.setIgnoreRepaint(true);// para mejorar la performance ¿?

public void paintWorld() {// nueva clase que usamos en vez de la clase paint() heredada de canvas
Graphics g = buffer.getGraphics();//g va a ser igual a grafico 2D nuevo...

getGraphics().drawImage(buffer,0,0,this);// grafica
}

public void updateWorld() {//clase que se encarga de las matematicas ^_^
    posX += vX;// modificamos las coordenadas x
    if (posX < 0 || posX > WIDTH) vX = -vX;//si es mayor al ancho entonces paso la pantalla
}

Bueno hasta aca le decimos al bicho que aparezca en medio de la pantalla y que vaya sumando 2 al eje horizontal hasta que llegue al final de la pantalla y cuando llegue al tope, los comience a restar y cuando llegue al principio de la pantalla que sume de nuevo y asi…

Capitulo 10:

Algo que me gusta son los nombres de los capitulos, son bastante creativos, este por ejemplo se llama, mas lento que el ojo XD

ventana.createBufferStrategy(2);
/*segun lo que dice el api (ver en la web) createBufferStrategy crea una
* nueva estrategia para multi-buffering que es util para mejorar la
renderizacion, crea la mejor estrategia segun el numero de buffers que
*  le des, en este caso 2
*/

g.drawImage(buffer,0,0,this);// mantiene la imagen antigua en su lugar mientras la nueva se dibuja

2 lineas de codigo que son un poco confusas, io todavia no temrino de entenderlas, pero si leen al comienzo del capitulo dice: . Una vez que el escenario ha sido pintado “fuera de la pantalla” (off-screen)( paintWorld() ), esa imagen en memoria es volcada encima de la ventana. A esta imagen en memoria se la suele llamar buffer, como que le da algo de sentido

Cuando ejecuten les va dar un error:

Exception in thread “main” java.lang.IllegalStateException: Component must have a valid peer
Si siguen avanzando el error en el sgte codigo desaparece, pero si quieren saber porque se da, bueno parece ser que antes de hacer el buffering necesita primero la ventana tener  algunas caracteristicas, sobre todo estar visible, si quieren que corra el codigo solo bajen el codigo ventana.createBufferStrategy(2); al final del constructor y va a correr sin problemas

Capitulo 11

Avanzamos un capitulo mas, unas cauantas lineas de cosigo agregadas y otras borradas, que son de suma importancia y mejoran bastante el comportamiento del bicho

public BufferStrategy strategy;
/*
* La clase BufferStrategy representa el mecanismo por el cual
se organiza la memoria compleja de un Canvas o ventana en particular
* Las limitaciones del hardware y el software determinan cual
* estrategia de buffer utilizar
*/

strategy = getBufferStrategy();// retorna la estrategia que se esta utlizando
requestFocus();// hace un enfoque a esta ventana

strategy.show();// Hace el siguiente buffer visible

bueno por hoy lo dejo en este capitulo c’ ya

Aún no hay comentarios »

Aún no hay comentarios.

Canal RSS de los comentarios de la entrada. URI para TrackBack.

Deja un comentario

Blog de WordPress.com.