queretaro
En el campo de aplicaciones en Java para teléfonos móviles, los juegos son las aplicaciones que copan el mercado. Con los componentes de la API de alto nivel poco se puede hacer, nos hace falta acceder con total libertad a la pantalla del dispositivo y la interacción del usuario. No podemos dejar al dispositivo que elija donde colocar las imágenes de nuestro juego, porejemplo.
A diferencia del API de alto nivel aquí tendremos muchas menos clases con las que trabajar, pero habrá que cuidar más los detalles, hasta nivel de píxel. También tendremos que tener en cuenta que la aplicación puede ser no portable, si trabajamos con un dispositivo de 176 x 208 píxeles con 4096 colores (12bits) y queremos ejecutarla en un dispositivo de 96x54 píxeles y 2 colores (1bit).Hay que tener en cuenta que se puede pasar del API de bajo nivel a alto nivel y viceversa, pero lo que no se puede es mostrar las dos a la vez. Estoy hay que tenerlo en cuenta, por ejemplo en un programa que necesite mostrar gráficas, pero el acceso a los datos se haga con un Form, al igual puede pasar con un juego donde el menú inicial del mismo se puede hacer con Form.
5.1.- La clase CanvasComo vimos en el apartado 3 la clase abstracta Canvas es como un folio en blanco en el cual el Midlet puede dibujar directamente. A la hora de crear un interfaz de bajo nivel para nuestro Midlet tendremos que crear una subclase que herede de Canvas y redefinir el método paint(), para dibujar directamente en la pantalla del dispositivo lo que queramos que aparezca.
protected abstract voidpaint(Graphics g)
Este método es llamado con un sólo argumento, que es objeto de otra clase de bajo nivel, la clase Graphics. Esta clase nos proporciona métodos que nos van a permitir dibujar líneas, rectángulos y arcos; rellenar zonas con un color, y mostrar texto en la pantalla del dispositivo. La aplicación no tiene que ocuparse de llamar al método paint(), de ello se encarga el dispositivo.
Vimosque en el API de alto nivel todas las clases descendientes de Screen no era necesario preocuparse de repintarlas, en el caso de las clases que heredan de Canvas serán los Midlets los que se ocupen de hacerlo. Para ello la aplicación se encargará de llamar al método repaint() de Canvas, el cual llamará eventualmente al método paint(), esto es así, porque desde nuestra aplicación no podemos llamar apaint directamente (¿De dónde sacaríamos un objeto Graphics?). Repintar el Canvas es una operación asíncrona, por lo que varios repintados se pueden llevar a cabo mientras se ejecuta una operación paint(), de esta forma la pantalla estará repintada de forma óptima, lo cual es muy importante para no tener saltos en los juegos. Se puede solicitar que se finalicen todos los repintados pendiente, conel método serviceRepaints(), pero hay que tener cuidado porque bloquea la aplicación hasta que termina paint. También se puede solicitar repintar sólo una parte de la pantalla con el método repaint(int x, int y, int width, int heigth).
La clase Canvas tiene la posibilidad de tener asociados comandos (para la interacción con el usuario), pero no tiene la posibilidad de contener algún tipo decomponentes.
Hay que tener en cuenta el origen del sistema de coordenadas de la clase Canvas, se sitúa en el punto superior izquierda de la pantalla del dispositivo, de esta forma la coordenada y crece hacia abajo y la coordenada x crece hacia la derecha, las coordenadas son números enteros positivos.
Podemos obtener el ancho y el alto de un Canvas con los métodos int getWidth() y int getHeight(),estos valores estarán condicionados por las características del dispositivo. También podemos ver si el dispositivo tiene un sistema de doble buffer para que las animaciones se hagan de una forma suave con el método boolean isDoubleBuffered(). Si el dispositivo no tiene sistema de doble buffer, probablemente será el Midlet el que tenga que implementarlo.
Para ver si el dispositivo tiene...
Regístrate para leer el documento completo.