Ir al contenido principal

Interceptar las teclas que se presionan!

Buenas amigos.

Primero quiero pedirles disculpas, que hace mucho no posteo nada, pero por algunos trabajos no tuve demasiado tiempo.

Hoy veremos como saber que teclas se presionan cuando tenemos en pantalla nuestro propio Canvas.

1 - Creamos nuestro MIDlet:


public class ClaseSeisMidlet extends MIDlet {

    Display pantalla;
    boolean inicio = false;

    protected void startApp() {
        if(!inicio){

            pantalla = Display.getDisplay(this);

            inicio = true;
        }
    }

    protected void pauseApp() {

    }

    protected void destroyApp(boolean unconditional) {
      
    }

}



2 - Creamos la clase MiCanvas:

public class MiCanvas extends Canvas {

protected void paint(Graphics g) {
}
}


3 - En este Canvas, dibujaremos un rectángulo, que podremos mover por toda la pantalla. Primero creamos 4 atributos de tipo entero:

int width;
int height;
int x;
int y;


4 - Creamos un constructor para inicializar las variables:

Nota: Para recordar, un Constructor es un método que se llama automáticamente al momento de crear un nuevo objeto de nuestro clase. Este debe poseer el mismo nombre que la clase.

public MiCanvas() {
// Seteamos que nuestro Canvas ocupe toda la pantalla
setFullScreenMode(true);
// Tamaño de ancho de nuestro rectangulo
width = 50;
// Tamaño de alto del rectangulo
height = 60;
// Coordenadas donde se dibujara por primera vez
x = 0;
y = 0;
}


5 - Ya tenemos las medidas, pasamos a dibujar el Rectángulo:

protected void paint(Graphics g) {
// Pintamos todo el fondo de blanco
int colorBlanco = 0xFFFFFF;
// Ponemos el color que vamos a usar
g.setColor(colorBlanco);
// Dibujamos un rectangulo del tamaño de toda la pantalla
g.fillRect(0, 0, getWidth(), getHeight());

// Color que usaremos para el rectangulo
int colorRojo = 0xFF0000;
g.setColor(colorRojo);
// Dibujamos el rectangulo
g.fillRect(x, y, width, height);
}


6 - Pongamos nuestro Canvas en pantalla, para eso volvemos a nuestra MIDlet:

public class ClaseSeisMidlet extends MIDlet {
Display pantalla;
MiCanvas canvas;
boolean inicio = false;

protected void startApp() {
if(!inicio){

pantalla = Display.getDisplay(this);

canvas = new MiCanvas();

inicio = true;
}

pantalla.setCurrent(canvas);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}

Esto tendría que mostrar algo así:


7 - Ahora es el momento de hacer que el rectángulo pueda moverse por la pantalla, para escuchar las teclas que se presionan debemos reescribir el método: keyPressed de nuestro Canvas:

protected void keyPressed(int keyCode) {

}

8 - Dentro de este método verificaremos que tecla se presiono y haremos lo que corresponda para cada una.

protected void keyPressed(int keyCode) {
// getGameAction(keyCode) nos devuelve si se presiono una tecla de juego
// las teclas de juego son ARRIBA - ABAJO - DERECHA - IZQUIERDA - FIRE
int key = getGameAction(keyCode);

switch(key){
case UP:
y -= 5;
break;
case DOWN:
y += 5;
break;
case LEFT:
x -= 5;
break;
case RIGHT:
x += 5;
break;
}

repaint();
}


Como podrán comprobar con las teclas de dirección podrán mover el rectángulo por la pantalla.

Bueno esto ha sido todo por hoy.

Saludos...
Matias

Comentarios

  1. oie amigo,apenas me inicio en esto , tengo un problema espero puedas ayudarme, tengo el Java ME SDK 3.0 pero cuando kiero correr el programa con algun de emulador de telefono, no corre, a veces lo instalo y desisntalo y cuando kiere lo abre
    no se si puedas decirme como solucionar el problema y si no cual otro me recomiendas
    Saludos !!

    P.D
    Excelente pagina, a favoritos

    ResponderBorrar

Publicar un comentario

Entradas más populares de este blog

Leyendo los datos del Form

Buenas, hoy continuaremos nuestro ejemplo: Trabajando con la Clase Form . Ahora le agregamos alguna funcionalidad a nuestro formulario y mostraremos como obtener los datos que el usuario ingrese. 1 - Primero crearemos un atributo de Tipo: Command private Command guardar; 2 - Creamos nuestro Comando guardar: guardar = new Command("Guardar", Command.OK, 0); La clase Command recibe por parámetros:  * Titulo : El nombre del comando  * Tipo: El tipo de Comando podrás elegir entre: Command.BACK Command.CANCEL Command.EXIT Command.HELP Command.ITEM Command.OK Command.SCREEN Command.STOP Según tu comando deberás elegir el que mas corresponda con la acción de tu comando. 3 - Ahora tendremos que agregar nuestro comando al formulario, pero primero deberemos implementar la interface de CommandListener a nuestro MIDlet para que pueda recibir los comandos que agreguemos: public class ClaseTresMidlet extends MIDlet implements CommandListener Al im...

Hola Mundo con Java ME

Buenas... Hoy un pequeño tutorial para comenzar con NetBeans y observar como crear nuestra primer aplicación con JAVA ME. 1 - Abrimos NetBeans 2 - Vamos a Archivo -> Proyecto Nuevo (Ctrl + Mayus + N) 3 - Creamos un Proyecto de Tipo: Java ME -> Mobile Application y hacemos clic en Siguiente. 4 - Aqui definimos el Nombre de nuestro Proyecto y la ubicacion. Proyect Name (Nombre del Proyecto). Y dejamos solo la  casilla seleccionada de Set as Main Project. * Set as Main Project: El proyecto se fija como Principal * Create Hello MIDlet: Seleccionando esta casilla nos creara automáticamente un Hola Mundo, pero esta clase tendrá muchos componentes que por el momento no es necesario que lo sepan, además de tener mucho código y ya asustarlos de una xD. Hacemos clic en Siguiente. 5 - En este paso podremos elegir el Emulador con que probaremos nuestra aplicación y las configuraciones de la Aplicacion. Es recomendable seleccionar CLDC-1.1 y MIDP-2.0 ya que son los estándares que soportan...

Hola Mundo en Canvas

Buenas, después de varios días sin actualizar, disculpen fueron días de parciales y no tuve mucho tiempo para poder escribirles... Hoy les mostrare como iniciar su proyecto a bajo nivel, la forma de crear todo por nosotros mismos. 1 - Primero creamos un proyecto, y creamos un MIDlet vació. 2 - Creamos una Nueva clase de java: public class CanvasHolaMundo { } 3 - Hacemos que nuestra clase herede (extends) de Canvas: public class CanvasHolaMundo extends Canvas { } Deberán importar la librería: "import javax.microedition.lcdui.Canvas;", como logran ver solo anteponiendo la palabra "extends" y el nombre de la clase ya se logra hacer una herencia. 4 - Al heredar de Canvas esta clase nos obliga a crear un método: public class CanvasHolaMundo extends Canvas {     protected void paint(Graphics g) {            } } Este método paint recibe el objeto Graphics que nos permiti...