Download - Java ME GameCanvas
![Page 1: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/1.jpg)
El paquete javax.microedition.lcdui.G
ame
Clase GameCanvas
![Page 2: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/2.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/3.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/4.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/5.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/6.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/7.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/8.jpg)
Clase Layer
![Page 9: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/9.jpg)
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 10: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/10.jpg)
Si consideramos que un juego consiste básicamente en un fondo con una serie de elementos animados, resulta muy cómodo crear este tipo de escenas utilizando "capas"(Layers), desplazándolas y haciéndolas visibles o invisibles de manera independiente.
Métodos en la clase Layer: getHeight()getWidth()getX()getY()isVisible()
![Page 11: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/11.jpg)
Clase LayerManager
![Page 12: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/12.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/13.jpg)
Layer Manager
![Page 14: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/14.jpg)
Imagen construida con un objeto Layer Manager
![Page 15: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/15.jpg)
TiledLayer
![Page 16: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/16.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/17.jpg)
Image image = Image.createImage("/board.png"); TiledLayer tiledLayer = new TiledLayer(10, 10, image, 16, 16);
Ejemplo:
![Page 18: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/18.jpg)
![Page 19: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/19.jpg)
Sprite
![Page 20: Java ME GameCanvas](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/20.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/21.jpg)
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](https://reader036.vdocument.in/reader036/viewer/2022081504/55cf9ced550346d033ab901b/html5/thumbnails/22.jpg)
// 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);