Saltar al contenido

juego en java 2D – 3er dia

30 agosto 2008

Actualizando el 03/05/2012… Agregue el código fuente que ya desapareció de la web aquí

capitulo 9:

Los cambios hasta aquí 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 acá 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 así…

Capitulo 10:

Algo que me gusta son los nombres de los capítulos, 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 código que son un poco confusas, yo todavía no termino 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 siguiente código desaparece, pero si quieren saber porque se da, bueno parece ser que antes de hacer el buffering necesita primero la ventana tener  algunas características, sobre todo estar visible, si quieren que corra el código solo bajen el código ventana.createBufferStrategy(2); al final del constructor y va a correr sin problemas

Capitulo 11

Avanzamos un capitulo mas, unas cuantas lineas de codigo 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

Buena Suerte!

Sin comentarios aún

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.

Únete a otros 183 seguidores