java me gamecanvas

22
El paquete javax.microedition.l cdui.Game Clase GameCanvas

Upload: roger-alcivar-cansiong

Post on 29-Oct-2015

107 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Java ME GameCanvas

El paquete javax.microedition.lcdui.G

ame

Clase GameCanvas

Page 2: Java ME 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.

Page 3: Java ME GameCanvas

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.

Page 4: Java ME GameCanvas

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.

Page 5: Java ME GameCanvas

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.

Page 6: Java ME GameCanvas

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".

Page 7: Java ME GameCanvas

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

Page 8: Java ME GameCanvas

Clase Layer

Page 9: Java ME GameCanvas

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.

Page 11: Java ME GameCanvas

Clase LayerManager

Page 12: Java ME GameCanvas

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.

Page 13: Java ME GameCanvas

Layer Manager

Page 14: Java ME GameCanvas

Imagen construida con un objeto Layer Manager

Page 15: Java ME GameCanvas

TiledLayer

Page 16: Java ME GameCanvas

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).

Page 17: Java ME GameCanvas

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

Ejemplo:

Page 18: Java ME GameCanvas
Page 19: Java ME GameCanvas

Sprite

Page 20: Java ME GameCanvas

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.

Page 21: Java ME GameCanvas

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.

Page 22: Java ME GameCanvas

// 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);