3.1. Vamos a implementar una aplicación similar al juego que se conocía como "TeleSketch". Esta aplicación nos deberá permitir dibujar en la pantalla utilizando las teclas de los cursores.
La idea es dibujar en offscreen (en una imagen mutable), de forma que no se pierda el contenido dibujado. En cada momento conoceremos la posición actual del cursor, donde dibujaremos un punto (puede ser un círculo o rectángulo de tamaño reducido). Al pulsar las teclas de los cursores del móvil moveremos este cursor por la pantalla haciendo que deje rastro, y de esta manera se irá generando el dibujo.
Tenemos una plantilla en el directorio TeleSketch
. Sobre esta
plantilla deberemos realizar lo siguiente:
a) En el constructor de la clase deberemos crear una imagen mutable
donde dibujar, con el tamaño del Canvas
.
b) En el método actualiza
deberemos dibujar un
punto en la posición actual del cursor y llamar a repaint
para repintar el contenido de la pantalla.
c) En paint
deberemos volcar el contenido de la imagen
offscreen a la pantalla.
d) Deberemos definir los eventos keyPressed
y keyRepeated
para mover el cursor cada vez que se pulsen las teclas arriba, abajo, izquierda
y derecha. Podemos utilizar las acciones de juegos (game actions) para conocer
cuáles son estas teclas.
3.2. Ampliar la aplicación anterior permitiendo cambiar el color y el grosor del lápiz. Para hacer esto podemos añadir una serie de comandos con un conjunto de colores y grosores preestablecidos.
3.3. Si dibujamos usando los eventos de repetición
el cursor muchas veces se moverá muy lentamente. En lugar de utilizar
este evento para dibujar podemos crear un hilo que ejecute un bucle infinito.
Dentro de este hilo mientras la tecla siga pulsada se irá moviendo el
cursor, de esta manera se actualizará con la frecuencia que nosotros
queramos sin tener que esperar al evento de repetición. Sabremos que
una tecla se mantiene pulsada desde que se invoca un evento keyPressed
hasta que se invoca un evento keyReleased
para la misma tecla.
3.4. Utilizar API de Nokia para dibujar en un canvas a pantalla completa.