MetaCard y Revolution: Herramientas de autor multiplataforma para multimedia | ||
---|---|---|
Anterior | Capítulo 6. Interfaz: controles complejos y procesos externos | Siguiente |
En este capítulo el lector ha podido encontrar y practicar con:
La creación de nuevas propiedades para un objeto.
La creación de objetos de forma dinámica.
La forma en que se disponen los objetos en una pila.
Vamos a poner en práctica estas temáticas en un contexto ligeramente diferente o con alguna variante:
Se desea mostrar en pantalla una serie de imágenes para el usuario pueda examinarlas y escoger entre ellas. Estas imágenes pueden representar motivos de diseño, personas, obras de una exposición, etc. En cualquier caso forman una colección organizada de imágenes, esto es: su número es inderminado, pero sus nombres están dispuestos (uno por línea) en un fichero de texto. Suponiendo que se disponen en un directorio miniatures, realiza un interfaz que cree los N objetos de tipo imagen capaces de contenerlos y dispuestos en horizontal en una sola fila, ocupando todo el ancho de la ventana de la aplicación.
Como muestra la Figura 6-14, esto se puede llevar a cabo con:
Un campo de texto (directoriBD
) donde se guarda la ruta inicial de la base de datos, que se puede introducir directamente o pulsando sobre él con el ratón, que hace que se abre la caja de diálogo que facilita la inserción (o la elección) de la misma. Para ello hay que emplear el botón secundario del ratón, por que el primero proporciona el foco.
Un botón (Carregar BD
) encargado de la creación de los objetos, su situación en la pila y la puesta a punto de sus propiedades.
Un botón (preparTemplateImage
) recoje todas las propiedasdes que definen cómo es una nueva instancia del objeto image. Este es el protagonista de toda la acción: observe como encapsula su actuación entre las instrucciones
lock screeny
unlock screen. De este modo, el usuario final no ve en la pantalla los detalles de creación y posicionamiento de los objetos creados. Este botón se ha establecido como deshabilitado (disabled) para denotar su caracter de auxiliar, en la versión final de la aplicación debería aparecer como oculto.
Figura 6-14. Detalle de la aplicación planteada donde aparecen: los controles mencionados y un ejmplo de su ejecución.
# # Campo de texto "directoriBD" # on mouseUp set the cursor to watch answer folder "Directori on comença la BD?" if the result <> "Cancel" then put it into me end mouseUp # # Botón "Carregar BD" # on mouseUp set the cursor to busy send "mouseUp" to button "preparaTemplateImage" repeat with i = 1 to the number of lines of\ URL("file:" & fld "directoriBD" & "/" & "bdImagens.txt") lock screen create image set the filename of the image id (the id of the last image) to \ fld "directoriBD" & "/miniatures/" &\ line i of URL("file:" & fld "directoriBD" & "/" & "bdImagens.txt") if (i = 1) then set the top of the image id (the id of the last image) to \ (the bottom of me + 4) set the left of the image id (the id of the last image) to \ (the left of this card) + 3 else set the loc of the image id (the id of the last image) to \ (the first item of the loc of image (the number of images - 1) + \ the width of the templateImage ),\ (the second item of the loc of image (the number of images - 1)) end if unlock screen end repeat end mouseUp # # Botón "preparTemplateImage" # on mouseUp set the cursor to busy set the width of the templateImage to \ (the width of this card) / the number of lines of \ URL("file:" & fld "directoriBD" & "/" & "bdImagens.txt") set the height of the templateImage to the width of the templateImage set the lockLocation of the templateImage to true set the script of the templateImage to the script of button "patroScript" end mouseUp
Añadir al ejemplo realizado en el apartado anterior un botón, cuya tarea es básicamente de ayuda durante la etapa de implementación: será el encargado de eliminar todas las imágenes de una tarjeta para poder establecer una situación de partida.
Este es un simple ejercio si, a partir de la ayuda sobre la orden create que ha tenido que utilizar previamente localiza la ordren delete. La única dificultad es que no le sirve la misma estructura de iteraciones que en el caso anterior. Así, si se quiere reescribir el mínimo código deberá plantear el bucle en sentido inverso:
on mouseUp set the cursor to busy repeat with i = the number of images down to 1 delete image i end repeat end mouseUp
Continuando sobre el mismo ejemplo, incluir la posibilidad de que el usuario "ordene" según su criterio las imágenes. Para ello se habrá de posibilitar el "pinchar y arrastrar" una imagen y dejarla caer sobre otra. Lo que deberá desencadenar el intercambio de posición entre esas dos imágenes implicadas.
Aviso |
grab i fer un swap de posicions entre les que intersecten. |