| MetaCard y Revolution: Herramientas de autor multiplataforma para multimedia | ||
|---|---|---|
| Anterior | Capítulo 4. Objetos y controles básicos | Siguiente |
El mecanismo básico de utilización de archivos de audio y animación está soportado por la instrucción play, pero la complejidad de estos archivos y la necesidad de mantener el tamaño del motor de una herramienta de autor en unos valores mínimos hacen recomendable poder descargar esta tarea en aplicaciones externas.
Para ver el funcionamiento de este objeto recurriré a un extracto del ejemplo didáctico, que sobre MetaCard realizó Antonio Serrano. La aplicación completa muestra algunos aspectos de MetaCard: controles básicos y ejemplos de código en funcionamiento. La Figura 4-24 muestra una sencilla botonera para controlar el vídeo que se reproduce en el centro de la misma. Obsérvese que el nombre se ha fijado, pero no se ha importado en la pila, si no que se incorpora desde el sistema de archivos en disco en el momento de la ejecución, lo que permitirá cambiarlo entre dos ejecuciones diferentes. Esto se muestra en el siguiente código:
#
# La tarjeta ("clip")
global nomvideo
on preOpenCard
hide group aviso
put " " into field vol
put "video1.avi" into nomvideo
put " " into field instruccion
end preOpenCard
on closeCard
play stop videoClip "videos\" & nomvideo
end closeCard
Los controles específicos del vídeo son implementados con una intrucción que es copiada en un campo de mensajes para apoyar la parte didáctica de la aplicación. Así tenemos:
#
# Botón "play"
global nomvideo
on mouseUp
play videoClip "videos\" & nomvideo
put "play videoClip <nombre>" into field instruccion
end mouseUp
#
# Botón "looping"
global nomvideo
on mouseUp
play videoClip "videos\" & nomvideo looping
put "play videoClip <nombre> looping" into field instruccion
end mouseUp
#
# Botón "stop"
global nomvideo
on mouseUp
play stop videoClip "videos\" & nomvideo
put "play stop videoClip <nombre>" into field instruccion
end mouseUp
#
# Botón "pause"
global nomvideo
on mouseUp
play pause videoClip "videos\" & nomvideo
put "play pause videoClip <nombre>" into field instruccion
end mouseUp
#
# Botón "resume"
global nomvideo
on mouseUp
play resume videoClip "videos\" & nomvideo
put "play resume videoClip <nombre>" into field instruccion
end mouseUp
#
# Botón "back"
global nomvideo
on mouseUp
play step back videoClip "videos\" & nomvideo
put "play step back videoClip <nombre>" into field instruccion
end mouseUp
#
# Botón "forward"
global nomvideo
on mouseUp
play step forward videoClip "videos\" & nomvideo
put "play step forward videoClip <nombre>" into field instruccion
end mouseUp
Nota: Ah, permítame una liger observación: las barras invertidas ("\") deberían ser, simplemente, barras ("/") por aquello de realizar un producto multiplataforma. La utilización de turas relativas permitiría un fácil transporte de la pila de un espacio físico a otro en el sistema de archivos de la máquina.
Pero con el devenir de las versiones de MetaCard hemos visto aparecer el objeto "player", que permite dejar esta tarea en manos de aplicaciones específicas: Xanim en plataforma Unix™, Media Player o QuickTime en Windows™ y Macintosh™. La definición básica de este contenedor la podemos ver en la figura Figura 4-25.
Trabajar con estos controles es tanto o más sencillo que con la instrucción play. Ahora tenemos la posibilidad de fijar su posición en una tarjeta y los controles son más preciso. Un ejemplo simple de aplicación que dispone de un campo de texto (de nombre "y", un player (llamado "x") y un botón, cuya pulsación pone en marcha o para la reproducción del vídeo. En función del botón utilizado como se muestra a continuación:
# Botón
if quinBoto es 1
then
set the filename of player "x" to fld "y"
start player "y"
else
stop player "y"
end if