java me gamecanvas

Post on 29-Oct-2015

108 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

El paquete javax.microedition.lcdui.G

ame

Clase GameCanvas

GameCanvas

Es una clase abstracta (tendremos que redefinir) qué hereda de Canvas y que tiene un buffer asíncrono y permite recoger el estado de las teclas del móvil.

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 gestión de eventos de teclado tengan un nivel de transparencia mayor para el programador.

Por ejemplo, ofrece la posibilidad de crear animaciones rápidas 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 específico en el que se podrán representar y tratar las imágenes antes de mostrarlas en la pantalla del dispositivo.

• La técnica de "polling" (encuesta). Permite acceder directamente al estado de las teclas del dispositivo.

OFF-SCREEN BUFFER

Es una representación de la pantalla que no es visible sino que está almacenada en memoria.

El buffer se rellena con pixels en blanco al inicializarlo y sólo 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 JuegoGameCanvas extends GameCanvas implements Runnable {

public void run() { Graphics g = getGraphics(); while (true) { // Actualizar el estado del juego. int keyState = getKeyStates(); // Responder a la pulsación de teclas, // repintando aquí por ejemplo. flushGraphics(); // Esperamos. } }}

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 }}

Clase Layer

Clase Layer

Es una clase abstracta que representa un elemento visual cualquiera del juego.

Propiedades:

• Posición

• Tamaño

• Posibilidad de hacerla o no visible.

Clase LayerManager

nos permite controlar y tratar conjuntamente con una serie de objetos Layer que formen parte de la misma aplicación. 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 aplicación. 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).

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

Ejemplo:

Sprite

Sprite es otra subclase de Layer y se podría decir que es el concepto dual de TiledLayer. Si antes generábamos a

partir de una imagen varias baldosas, ahora, a partir de varias imágenes (frames) construirmos una única

imagen animada.

Ejemplo:

Sprite sprite = new Sprite( imagen, frameWidth, frameHeight);

Crea el objeto Sprite definiendo un tamaño 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);

top related