Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Pgina 1
Hacer una fotografa con la cmara de nuestro telfono y pintar sobre ella.
Qu aprender ?
Trabajar con eventos encargados de controlar si se toca o si se desliza algn elemento sobre
la superficie del telfono.
Definir valores para recordar la informacin, como el tamao del trazo que ha seleccionado
el usuario.
Pgina 2
Empezamos
Inicia un nuevo proyecto desde la opcin New y llmalo Bote de Pintura.
El nombre que asignemos al proyecto con el que estamos trabajando. sta ser la
denominacin que tendr la aplicacin cuando empaquetemos para que funcione en los
telfonos. Podemos utilizar el botn Save As (Guardar como) para que Component
Designer abra una nueva versin del proyecto. Tambin podemos guardarla con otro
nombre.
Pgina 3
El ttulo de la pantalla, que aparece en la barra de ttulo del telfono. Su valor inicial ser
Screen1, que es el que mostraba Hello Purr. Este es el que hemos cambiado.
Tres componentes Button para seleccionar la pintura roja, azul o verde y uno
HorizontalArrangement para organizarlos.
Un componente Button para limpiar el lienzo y otros dos para cambiar el tamao del trazo.
Un componente Canvas que ser el lienzo de dibujo. Canvas tiene una propiedad
Pgina 4
3. Crea dos botones ms para los colores azul y verde de la misma forma
que acabas de hacer. Les llamars BotonVerde y BotonAzul.
Colcalos debajo del botn rojo. Cambia sus propiedades Text por
Verde y Azul, respectivamente.
Fjate que en este proyecto hemos modificado el nombre de los componentes en vez de usar
el predeterminado como hicimos con Hello Purr.
Pgina 5
Agregar el lienzo
El lienzo ser la superficie donde dibujaremos los crculos y las lneas. Vamos a agregarlo y
a aadir el archivo kitty.png, que utilizaremos como fondo (BackgroundImage):de
DibujoCanvas
1. Desde la categora Basic de la seccin Palette, arrastra el componente Canvas al visor.
Cambia su nombre a DibujoCanvas. Modifica el valor de su anchura (propiedad width) a
Fill parent y asgnale una altura de 300 pxels.
2. Usa el archivo Kitty.png como fondo del lienzo (es decir, asgnalo a la propiedad
BackgroundImage del componente Canvas). En la seccin Properties vers que el valor de
BackgroundImage es None (ninguno). Haz clic sobre ese campo y utiliza el botn Add
(Agregar) para seleccionar el archivo Kitty.png.
3. Ahora asigna el color rojo a la propiedad PaintColor de Canvas. As, cuando un usuario
abra la aplicacin y an no haya elegido ningn color, empezar dibujando con el rojo.
Pgina 6
Pgina 7
Pgina 8
Pgina 9
4. Tambin tendremos que determinar el radio (r) del crculo que trazar la aplicacin. Como
unidad de medida usaremos el pxel, que es el punto ms pequeo que se puede dibujar en
pantalla. Le asignaremos el valor 5: haz clic en un punto de la pantalla donde no haya nada,
pulsa sobre el botn izquierdo Math que aparecer en pantalla y, de la lista desplegable,
selecciona el elemento 123 para crear un bloque numrico. Cambia su valor (de 123 a 5) y
arrstralo hasta la ranura r. La figura muestra el aspecto del controlador de eventos
DibujoCanvas.Touched:
Pgina 10
PRUEBA!!!!
Vamos a comprobar cmo funciona la aplicacin en la pantalla del telfono. Cuando la
toque, deber dibujar un pequeo crculo. Como asignamos el valor Red a la propiedad
Canvas.PaintColor, aparecer en color rojo. Si no lo hubisemos establecido as, los dibujara de
color negro, que es el valor predeterminado o por defecto. Por si acaso guarda el proyecto en tu
ordenador con el nombre Bote de Pintura, se generar el fichero Bote de Pintura.apk que es el
que debes copiar a tu telfono y probarlo si no te funciona correctamente ahora.
Primera Modificacin
Aadir el evento encargado de dibujar una lnea
Ahora vamos a agregar el controlador de eventos que comprobar si el usuario desliza el
dedo por la pantalla. Ya que no es lo mismo tocarla que deslizar el dedo por ella:
Tocamos la pantalla cuando colocamos el dedo en un punto del lienzo y lo levantamos sin
ms, sin llegar a moverlo por la superficie de la misma.
Pgina 11
Algo parecido ocurrir con la aplicacin de dibujo porque, en realidad, lo que hacemos aqu
es trazar cientos de pequesimas lneas rectas para crear el efecto de una lnea curva. Cada vez que
deslizamos el dedo por la pantalla, hacemos una pequea lnea desde la ltima posicin que tena el
dedo hasta la nueva.
Desde el Blocks Editor.
1. Abre el cajn DibujoCanvas y arrastra el bloque DibujoCanvas.Dragged hasta el rea de
trabajo.
El evento DibujoCanvas.Dragged tiene siete argumentos.
DraggedSprite: Este argumento tendr el valor true (verdadero) cuando el usuario deslice el
dedo sobre la imagen de un sprite. No lo utilizaremos en este captulo.
Pgina 12
Pgina 13
PRUEBA!!!!
Segunda Modificacin
Aadir los controladores de los botones
La aplicacin que estamos creando permite dibujar con el dedo pero siempre usa el mismo
color: Rojo. Ahora, vamos a aadir unos controladores a los que asignaremos botones. Con ellos el
usuario cambiar el tono del trazo. Tambin emplearemos el controlador BotonBorrado para que el
usuario borre el contenido de la pantalla y empiece a dibujar de nuevo en el lienzo.
Desde BlockEditor:
1. Haz clic sobre la pestaa My Blocks
2. Abre el cajn de BotonRojo y arrastra el bloque BotonRojo.Click hasta el rea de trabajo.
3. Abre el cajn DibujoCanvas y arrastra el bloque Set DibujoCanvas.PaintColor to hasta la
seccin do de BotonRojo.Click.
4. Haz clic sobre la pestaa Built-In. Abre el cajn Colors y arrastra el bloque del color Rojo
hasta colocarlo en la ranura del bloque to de DibujoCanvas.PaintColor.
5. Repite los pasos del 2 al 4 para aadir botones para el color Azul y Verde.
Pgina 14
Pgina 15
PRUEBA!!!!
Tercera Modificacin
Cambiar el tamao del punto
El tamao del trazo est definido por puntos, que se establecen desde
DibujoCanvas.DrawCircle. En la aplicacin asignaremos el valor 5 al argumento R(radio). Para
variar el grosor del trazo, deberemos variar este valor. Prueba a modificar el valor del radio a 10.
Guarda el proyecto como PaintProPuntoa10 y gurdalo en tu PC como hasta ahora. Ves al telfono
y dibuja. Comprobars que el trazo ha alterado sus dimensiones.
El problema que tenemos aqu es que slo podemos emplear el rango que le asignemos al
argumento R. Pero, vamos a modificar el programa para que el usuario pueda cambiar el tamao del
trazo sin la ayuda del programador. No olvides que el trazo era una sucesin de puntos.
Vamos a hacer que, cuando el usuario toque el botn BotonGrande (Puntos grandes), la
aplicacin vare el tamao del punto a 8 pxels. Adems, en el momento en que pulse el botn
BotonPequeo (Puntos pequeos), se le asigne un tamao de 2 pxels.
Pgina 16
Para utilizar distintos valores con el argumento R (radio), la aplicacin deber saber cal
queremos emplear. Tenemos que especificar un valor y guardarlo en algn sitio para que el
programa lo recuerde. Cuando hay que acordarse de algo no emplearemos propiedades, sino
variables. Una variable es una clula de memoria. Podemos verlo como una caja donde guardamos
cosas. Su contenido puede variar (como el tamao del trazo). Trataremos las variables en captulos
posteriores. Vamos a empezar por definir una llamada TamanoPunto:
1. Desde BlockEditor, abre el cajn Definition que se encuentra dentro de la pestaa Built-In.
Arrastra hasta el rea de trabajo un bloque def variable as. Sustituye el texto variable por
TamanoPunto.
2. Fjate en el lado derecho del bloque de la variable: tiene una ranura. Es para especificar el
valor inicial de la variable o, lo que es lo mismo, determinaremos el rango que tendr
cuando se abra la aplicacin. En programacin, hablaremos de inicializar una variable. En
nuestro programa, asignaremos el valor 2 a TamanoPunto. Para ello, crearemos un bloque
number 2. Recuerda que lo podremos generar escribiendo el nmero 2 en el rea de trabajo
o arrastrando el bloque number 123 de la lista desplegable que aparece cuando hacemos clic
en el botn emergente Math (Matemticas). Luego lo acoplaremos a la muesca que tiene en
su lado derecho, como en la figura:
Utilizar variables
Ahora vamos a cambiar el argumento de DibujoCanvas.DrawCircle que se halla en el
controlador DibujoCanvas.Touched para que utilice el valor de la variable TamanoPunto. As,
evitaremos que trabaje siempre con un nmero fijo. Inicialmente TamanoPunto tendr el valor 2
pero cambiaremos el valor de TamanoPunto para que modifique el tamao del trazo.
1. En Blocks Editor, haz clic sobre la pestaa My Blocks y abre el cajn My Definitions.
Debera haber dos nuevos bloques: uno global TamanoPunto que se encargar de asignar
un valor a la variable y un set global TamanoPunto que dar un rango nuevo a la variable.
Estos dos bloques se han generado automticamente al crear la variable TamanoPunto, de
Vicente Destruels Moreno
Pgina 17
Por
Pgina 18
Nota: La palabra global del bloque set global TamanoPunto to indica que la variable la pueden
utilizar todos los controladores de eventos del programa ( es decir, que se puede emplear de forma
global) Algunos lenguajes de programacin permiten definir variables que son locales y que slo se
puede recurrir a ellas en una parte concreta del programa. AppInventor slo trabaja con variables
globales.
Antes de seguir prueba el funcionamiento de la aplicacin. Guarda el proyecto en tu
ordenador con el nombre Bote de Pintura4, se generar el fichero Bote de Pintura4.apk que es
el que debes copiar a tu telfono y probarlo si no te funciona correctamente ahora. Haz clic sobre
los botones que controlan el tamao del trazo y prueba a dibujar en el lienzo. Aparecen los crculos
con diferentes tamaos? Y las lneas?
PRUEBA!!!!
Las dimensiones de la lnea no deberan cambiar porque slo hemos programado el bloque
DibujoCanvas.DrawCircle para que use la variable TamanoPunto. Basndose en esto, Sabras
modificar los bloques para que los usuarios tambin pudiesen alterar el tamao de las lneas?
Pgina 19
Recuerda que Canvas tiene una propiedad llamada LineWidth. Cuando lo logres guarda el
proyecto como Bote de Pintura5. La solucin esta abajo, mrala despus de haberlo intentado, en
caso de no haberlo logrado.
Pgina 20
Pgina 21
Variaciones
Te propongo unas cuantas variaciones para que las explores (HABLA PRIMERO CON EL
PROFESOR):
Permite que el usuario determine el tamao del punto que quiera utilizar. Debers hacerlo
con un componente TextBox. De esta manera, podrs recurrir a cualquier valor y no ceirte
slo a 2 y 8 pxeles.
Resumen
Este captulo te ha enseado cmo se puede utilizar el componente Canvas para crear un
programa de dibujo sobre un lienzo, detectar cundo el usuario toca la pantalla y desliza su dedo por
ella, programar controladores de eventos relacionados y utilizar variables. Tambin se puede
emplear para programar animaciones como las que aparecen en los juegos 2D. Ampliaremos ms
este tema en otros captulos.
Pgina 22