Está en la página 1de 22

El paquete javax.microedition.lcdui.

Game

Clase GameCanvas

GameCanvas

Es una clase abstracta (tendremos que redefinir) qu hereda de Canvas y que tiene un buffer asncrono y permite recoger el estado de las teclas del mvil.

ofrece la posibilidad de implementar un juego completo, incluyendo toda su funcionalidad, con un simple bucle controlado por un nico hilo.
Esto es as ya que permite que los procesos de pintado y gestin de eventos de teclado tengan un nivel de transparencia mayor para el programador.

Por ejemplo, ofrece la posibilidad de crear animaciones rpidas y libres de parpadeo o la posibilidad de examinar el estado de las teclas del dispositivo.

algunas tareas son:

La posibilidad de acceder directamente al objeto Graphics y de disponer de un buffer especfico en el que se podrn representar y tratar las imgenes antes de mostrarlas en la pantalla del dispositivo. La tcnica de "polling" (encuesta). Permite acceder directamente al estado de las teclas del dispositivo.

OFF-SCREEN BUFFER

Es una representacin de la pantalla que no es visible sino que est almacenada en memoria.
El buffer se rellena con pixels en blanco al inicializarlo y slo el objeto GameCanvas puede modificar su contenido.

Estas modificaciones se ejecutan sobre el contenido del buffer, pero no son visibles hasta que se indica que su contenido se vuelque a la pantalla, es decir, funciona como una "pantalla virtual".

Ejemplos
public class JuegoCanvas extends Canvas implements Runnable { public void run(){ while (true) { // Actualizar el estado del juego repaint(); // Esperar }} public void paint(Graphics g) { // Pintar imagenes } protected void keyPressed(int keyCode) { // Codigo de respuesta a la // pulsacion de una tecla }} public class JuegoGameCanvas extends GameCanvas implements Runnable { public void run() { Graphics g = getGraphics(); while (true) { // Actualizar el estado del juego. int keyState = getKeyStates();

// Responder a la pulsacin de teclas, // repintando aqu por ejemplo. flushGraphics(); // Esperamos. } }}

Clase Layer

Clase Layer
Es una clase abstracta que representa un elemento visual cualquiera del juego.
Propiedades: Posicin Tamao Posibilidad de hacerla o no visible.

Si consideramos que un juego consiste bsicamente en un fondo con una serie de elementos animados, resulta muy cmodo crear este tipo de escenas utilizando "capas"(Layers), desplazndolas y hacindolas visibles o invisibles de manera independiente.
Mtodos en la clase Layer: getHeight() getWidth() getX() getY() isVisible()

Clase LayerManager

nos permite controlar y tratar conjuntamente con una serie de objetos Layer que formen parte de la misma aplicacin. La manera de hacerlo es manteniendo una lista ordenada en la que los Layers pueden ser insertados, accedidos o eliminados.

nos permite controlar y tratar conjuntamente con una serie de objetos Layer que formen parte de la misma aplicacin. La manera de hacerlo es manteniendo una lista ordenada en la que los Layers pueden ser insertados, accedidos o eliminados.

Layer Manager

Imagen construida con un objeto Layer Manager

TiledLayer

TiledLayer es una clase que hereda de Layer y que representa un elemento visual compuesto por un conjunto de celdas, cada una de las cuales tiene asociada una imagen que denominaremos baldosa (tile).

Ejemplo:

Image image = Image.createImage("/board.png"); TiledLayer tiledLayer = new TiledLayer(10, 10, image, 16, 16);

Sprite

Sprite es otra subclase de Layer y se podra decir que es el concepto dual de TiledLayer. Si antes generbamos a partir de una imagen varias baldosas, ahora, a partir de varias imgenes (frames) construirmos una nica imagen animada.

Ejemplo:
Sprite sprite = new Sprite( imagen, frameWidth, frameHeight); Crea el objeto Sprite definiendo un tamao de frame igual a imagen.getWidth() e imagen.getHeight(), es decir, crea un nico frame por lo que el Sprite ser no animado.

// Crear un Sprite a partir de una imagen que contiene los frames

sprite = new Sprite(,15,25);


// Declarar cual es la secuencia de frames int[] sequence = {0,1,2,3}; sprite.setFrameSequence(sequence); // Determinar el pixel de referencia y su posicion sprite.defineReferencePixel(refX,refY); sprite.setRefPixelPosition(coordXSprite,coordYSprite); // Hacer el Sprite visible sprite.setVisible(true);

También podría gustarte