MetaCard y Revolution: Herramientas de autor multiplataforma para multimedia | ||
---|---|---|
Anterior | Capítulo 1. MetaCard | Siguiente |
En el propio MetaCard existen otros dos tutoriales, lo cual permite aprender al tiempo que construir y practicar. Pero quiero destacar que hay otras opciones interesantes para aprender cosas sobre él (también son aplicables para Revolution): desde mirar el propio código de MetaCard y reaprovechar objetos que nos interesen a direcciones de la Web donde encontrar ejemplos listos para utilizar y pequeñas piezas para casos concretos.
Esta es una de las opciones que hacen de esta herramienta diferente a otras en el mundo de Multimedia (y en este sentido, el lector puede reconocer la similitud existente entre opciones como el Tcl/Tk de John Ousterhout y la que nos ocupa en este documento).
Nota: Si el lector no es el afortunado usuario de una plataforma UNIX puede que tenga que recurrir a la imaginación para encontrar una aplicación que no quiera ser protagonista en la pantalla ... Aquí se utiliza la orden find del sistema operativo para buscar archivos. ¿Que su sistema operativo no tiene una orden así? ¡Venga ya! Pues no se ..., ah sí, puede adaptarlo a la orden de listar ficheros de su "sistema".
Lo encontrará junto a los otros dos tutoriales que ya hemos visto. Le recomiendo que la pruebe, puesto que le mostrará cómo crear un interfaz más complejo (con menús, aceleradores de teclado, etc.), redimensionar objetos en una ventana para adaptarse a un tamaño diferente de la misma, lanzar otras pilas o crear un ejecutable. En la Figura 1-12 puede ver un ejemplo de la pila en ejecución. No es muy sorprendente a primera vista, pero cada una de las nueve tarjetas le enseñarán detalles sobre cómo construir en MetaCard aprovechando el propio MetaCard.
Sugerencia: El planteamiento de este uso de MetaCard ha sido utilizado en un artículo de la revista "Linux Journal" que puede encontrar en la Red. Haga de investigador y, si tiene acceso en estos momentos a la Web, recórrala buscando el mencionado artículo de ... Ud. es el investigador.
En ocasiones, es necesario realizar una programación a más bajo nivel que la que permite MetaTalk y mantener la coherencia de interfaz gráfico que permite el desarrollo del interfaz con objetos de MetaCard. Si es usted conocedor de la programación en C y necesita una aplicación que se comunique directamente con el motor de ejecución de MetaCard, este es su tutorial. Un ejemplo de las posibles realizaciones de este tutorial se muestra en la Figura 1-13, la Figura 1-15 y la Figura 1-14.
El primer ejemplo muestra cómo realizar llamadas a funciones implementadas en lenguaje C desde MetaCard. El código de ejemplo se puede obtener del fichero external.tar.Z que deberá compilarse y situarse en el mismo directorio donde se encuentra el ejecutable de MetaCard. El ejemplo realiza las llamadas pertinentes y deja los resultados su ejecución en los campos de texto correspondientes. También muestra cómo compartir datos accediendo a las variables que se declaran en MetaCard.
El segundo de los ejemplos (en la segunda tarjeta de la pila) ejemplifica cómo utilizar la propiedad imagePixmapId de un objeto de tipo image, permitiendo la interacción asíncrona entre MetaCard y una aplicación externa que utiliza esa referencia visual en pantalla. El código es el del "Juego de la vida" donde la regla básica es que una celda (el elemento básico de tal planteamiento) permanece activa (sobrevive) si tiene dos o tres celdas vecinas activas (vivas) y se desactiva (muere) en otro caso. La evolución de estas "comunidades de individuos" se actualiza a cada iteracción del algoritmo a partir de una situación inicial y los elementos pueden tener comportamientos más complejos, con lo que habrán "comunidades" que pueden converger a un estado estable, mientras otras permanecen en un continuo cambio (de posición o de disposición).
La aplicación externa dibuja en este contenedor ("X pixmap") a partir del identificador que se le pasa, actualiza sus contenidos y los refresca en pantalla de modo asíncrono respecto a MetaCard (sin la intervención directa de este). Por lo que es posible, por ejemplo, mover la imagen mientras se actualiza su contenido; así como modificar sus elementos activos con el ratón.
Un ejemplo más lo proporciona la siguiente tarjeta de esta aplicación, donde se muestras las bases de las operaciones de procesado de imágenes a partir de la utilización de filtros y la utilización de la función "MatrixConvolve" de MetaCard.
Figura 1-15. "External Tutorial": aplicaciones para acelerar el procesado de imágenes mediante librerías externas.
La versión de ALTUIT RunRev Site ofrece una versión totalmente independiente de plataforma de este ejemplo, en una versión realizada sobre Revolution, que puede ejecutarse desde MetaCard y que en función de la plataforma que detecta se está utilizando para ejecutar la aplicación ofrece una versión a partir de la utilización de un programa externo o desde el propio MetaCard cuando está en las otras plataformas.
Volveremos sobre estos últimos casos con más profundidad en la sección de nombre Procesado de imágenes en Capítulo 9.
Si lo que necesita es introducirse en el mundo de la programaciónn, puede hacerlo también con MetaCard. Si se dirige al sitio FTP de MetaCard, puede encontrar la última versión de esta herramienta antes de que se haya hecho pública. En esta dirección de FTP, junto a la distribución, puede encontrar dos ficheros: mtp.mc y mtpguide.mc que le ayudarán en este trámite. También podrá encontrar dirección en la URL http://www.metacard.com/pi6.html con su navegador favorito. Aquí, repasaremos estos conceptos en el Capítulo 3.
Pero si lo que necesita es conocer opciones de MetaCard con mayor profundidad para tener una mejor idea de lo que puede hacer con ella, le recomiendo que busque en las MetaClasses de Cross Worlds Computing. En el sitio Web de esta empresa encontrará junto a extensiones de MetaCard, la referencia por orden de dificultad a una serie de items sobre el desarrollo de aplicaciones que, a modo de pequeñas lecciones, introducen de forma amena al lector interesado en cuestiones avanzadas. En la la sección de nombre MetaClasses, haremos un breve resumen de estas.
Pero no olvidemos que desde dentro de la propia herramienta se nos ofrecen ejemplos de utilización de órdenes y objetos en el apartado de MetaCard Examples que estaba en la pila de ayuda que ya habrá visitado. Y, por último, en la ayuda en línea, a la que puede acceder desde la misma pila y que está compuesta por:
El listado exhaustivo (Index) de instrucciones que puede utilizar, acompañadas en un buen número de ocasiones de pequeños ejemplos.
El manual de usuario (Concepts & Techniques) de MetaCard.
Y el manual de referencia (MetaTalk Reference) del lenguaje que se utiliza para programar el comportamiento dinámico de los componentes.
Otra de las formas de aprender sobre un lenguaje de programación o la utilización de una aplicación es viendo ejemplos de cosas hechas con ellos. En este caso podemos aprovechar que MetaCard, el entorno (como Revolution), está hecho con pilas y el lenguaje de programación MetaTalk. Así que podemos coger el "Control Browser" y abrir la pila "Home", la "Menu Bar" o cualquier otro elemento con el que interactuemos en este sistema. También podemos copiarlos a nuestra aplicación y reutilizarlos.
Figura 1-17. Desensamblando la pila "Home" para aprender.
# # Botón "Menu Bar" # on mouseUp if the short name of me is "Menu Bar" then palette "MetaCard Menu Bar" else palette "Tools" end mouseUp # # Botón "Message Box" # on mouseUp modeless "Message Box" end mouseUp
Toda ventana que abre MetaCard es una oportunidad de aprender, puesto que todas son subpilas de la pila HOME o de la "Menu Bar" generalmente. Yo empezaría por examinar la pila "Home", claro, ¿por qué no?. Tranquilo, no la va a romper y más tarde hablaremos de lo que hay que hacer para modificarla[1]. En la figura Figura 1-17 verá la que utilizo ahora y el código de dos botones de la pila "Home", los tres últimos botones no son del interfaz estándar ... Algunas otras interesantes (Figura 1-18) son las que se ejecutan desde las opciones de menú de la "Menu Bar": File|Import..., File|Page Setup..., Tools|Find..., Tools|tools.metacard.com.
Figura 1-18. Pilas de donde aprender, de arriba abajo y de izquierda a derecha: importar elementos, configurar la impresión, buscar en los campos de texto y descargas de Internet.
La "demo" es, posiblemente, uno de los sitios más bonitos y divertidos para aprender. Si también trabaja sobre GNU/Linux verá que algunos manejadores de ventanas son reacios a atender peticiones de eliminar la barra de título de la ventana. Esta demostración que incorpora MetaCard utiliza esto para empezar e impresionar y, en ocasiones, sólo se ve el fondo negro y se oye que pasan cosas de fondo. ¿Nos vamos a quedar sin ver la "demo"? Tranquilo, no. Pero bueno, de paso echaremos un vistazo al código en tres pasos:
Tanto para aprender como para cursiosar, necesitamos saber dónde está la pila. Dspués de curiosear en el código del botón correspondiente de la pila "Home" veremos que la pila que implementa esta demostración es mcdemo2.mc:.
on mouseUp go "mcdemo2.mc" end mouseUp
Sabido esto, podemos ir a la "Menu Bar" y ejecutar:
lock messages; open stack "mcdemo2.mc"
Si no observa más que un triste recuadro gris, sin imánenes, texto, ejecute MetaCard en su directorio de origen. Utiliza rutas relativas (lo cual es correcto) pero nosotros no hemos dejado que se incie asegurando la ubicación correcta, así que ... También puede cambiarla a mano y reiniciar la "demo", ¡claro!
Ya podemos empezar a ver código, desde la "Message Box" ejecutando cosas como:
edit script of stack "mcdemo2.mc"
Allí verá por qué las pilas de MetaCard desaparecen al ejecutar MetaCard . ¿No sabe por qué? digo "desaparecen"? Entonces es por que no ha intentando ir al "Control Browser" mientras está ejecutando la "demo" para ver qué contiene. Hay que reconocer que son unos artirstas de verdad (estoy aplaudiendo, aunque no se oiga, frente al "About" de la demostración).
edit script of first card of stack "mcdemo2.mc"
Encontrará cómo empieza a reproducir el vídeo de entrada y hace desaparecer hacia fuera de la pantalla el ratón.
Desde luego, puede dedicase a recorrer la pila si no lo ha hecho ya. Como en cualquier otra pila de MetaCard: ponga el modo ejecución (browse tool) y a divertirse aprendiendo. Desde luego, lo mejor son las apariciones de Penélope y el movimiento tembloroso de la pila (earthquake2).
Y puestos a aprender, si ha visto la "demo", en su sección avanzada, habrá podido utilizar la Agenda personal (Personal Organizer Example), pero seguramente no sabrá cómo está hecha.
Pues abrá MetaCard y busque dentro del directorio donde esta el subdirectorio demo, dentro de este encontrará persorg.mc. Delante de Vd. tiene una pila y con el "Control Browser" puede examinarla como con cualquier otra, como muestran la Figura 1-19 y la Figura 1-20.
A partir de las lecciones de Cross Worlds (ahora Runtime Revolution Ltd.) se puede comenzar a revisar una serie de conocimientos sobre la herramienta guiados por la tabla de dificultad (que se incrementa con el valor numérico asociado a las mismas en la tabla), importancia y tema tratado.
Tabla 1-1. Listado de las MetaClasses
Título | Dificultad |
---|---|
The Basics: Understanding stacks, subStacks and mainStacks | 1 |
Messages and the Message Hierarchy | 1 |
Groups and Backgrounds | 2 |
Finding and Replacing Text | 2 |
StackFiles | 3 |
Doing Menus in MetaCard | 3 |
Using the Send Command | 4 |
Using Files with MetaCard | 4 |
Text Management | 5 |
Yo le recomiendo que lo haga, pero Vd. puede decidir si debe leer o no estas pequeñas y prácticas lecciones en cuanto que si comprende y es capaz de explicar las siguientes ideas:
Cuando algo sucede, se envía un mensaje: "Message". Como respuesta a un mensaje se ejecuta un código: Handler.
Existe una "Jerarquía de Objetos": que se traduce en una herencia de propiedades entre "clases" y un paso de mensanjes entre los objetos que la conforman.
¿Qué ocurre si no existe un manejador para el mensaje que recibe un objeto?
Realizar un bucle con send y pararlo con cancel.
Pilas, subpilas y cómo se guardan en un fichero. ¿Y cómo se abre una pila desde otra? ¿Se puede navegar (avanzar o "ir") a una tarjeta de una pila determinada?
Nombrar a un objeto: cómo se indica un determinado objeto de los que hay en una pila de MetaCard. ¿Cuándo hay que darle nombre?.
Para referencias ficheros externos a una pila es aconsejable utilizar rutas relativas. Determinación del directorio inicial o de trabajo de una pila.
Ficheros: operaciones con ficheros, exportar/importar, lanzar aplicaciones externas desde dentro de MetaCard.
Agrupar objetos.
Operaciones sobre texto: selección de caracteres, items, palabras o líneas. Operaciones de búsqueda, reemplazo y filtrado. Expresiones regulares.
[1] | Aunque ahora que pienso: ¿Vd. ya lo sabe, verdad? Claro lo ha visto en el primer capítulo (más concretamente en la la sección de nombre Paso 15: regrese a la pila "Home") de este texto al realizar el primer tutorial. |