Sunteți pe pagina 1din 62

Marcas registradas

Todos los nombres de programas, sistemas operativos, equipos hardware,


etc. que aparecen en este libro son marcas registradas de sus respectivas
compaas u organizaciones.
Aviso
La informacin contenida en este documento est sujeta a cambios sin
previo aviso
Reservados todos los derechos. Se prohibe la reproduccin, adaptacin
de este manual sin permiso por escrito del Instituto Galego de Formacin.
Ninguna parte de este documento podr fotocopiarse, reproducirse sin
permiso por escrito del Instituto Galego de Formacin.

Instituto Galego de Formacin (Vigo)


C/ Zamora 13A (esquina Ramn y Cajal)
36.203 Vigo
Telfono: 986 48 52 52
Instituto Galego de Formacin (O Burgo)
Ra Os Templarios 16 Bajo (Frente al Puente del Burgo)
15.670 O Burgo
Telfono: 981 65 21 18
www.igf.es

Copyright Instituto Galego de Formacin 1996 - 2000.

Componentes de Director.

La ventana Cast.
Men Window > cast.
En esta ventana es donde almacenamos los elementos importados o creados en el mismo Director, que
formarn parte de la pelicula. Este es el "almacn" de nuestro proyecto.

Navegacin por el Cast:


Nos permite avanzar y retroceder a travs de los miembros del reparto.
Utilidad para mover los miembros del reparto:
Esta es una herramienta muy til cuando tenemos un gran nmero de elementos en el cast y queremos mover
alguno a otra posicion no visible. Para hacerlo, seleccionamos el miembro del cast que queremos mover y
luego arrastramos el cuadradito hacia el lugar del Cast a donde queremos mover este miembro seleccionado.
Al soltar sobre la casilla que queramos, veremos que el miembro que teniamos seleccionado se coloca en esa
casilla.
Script e Info del miembro de reparto:
Estos son dos botones fundamentales para trabajar en el Cast.

En el primero podemos asignar un Script al miembro seleccionado. De esta forma este miembro, al ser
colocado en el escenario se comportar tal y como se le haya asignado en el script de Cast,
independientemente de donde este colocado. Por ejemplo:
Si a un miembro le asignamos el script:
on mouseDown
beep
end
...este personaje siempre reproducir un sonido de alerta del sistema cada vez que se haga clic sobre l.
El segundo botn nos sirve para asignar propiedades particulares al miembro del reparto. Ms adelante
veremos ejemplos en donde utilizaremos estas dos herramientas.

La ventana Tool Palette.


Men Window > Tool Palette.
Esta es la paleta de herramientas de Director.
La primera herramienta es el puntero. Sirve como cualquier otro
puntero para seleccionar y mover objetos por el Stage (escenario).
La segunta es la herramienta de giro. Sirve para girar de forma
libre los sprites que hemos colocado en el escenario.
Luego tenemos las figuras con relleno y sin relleno.
Estas figuras tiene la particularidad de ocupar muy poca memoria,
lo que agilizar nuestra pelicula si se reproduce en internet, por
ejemplo, en donde la velocidad de ejecucin en un punto crtico.
Los botones de seleccin y radio, son los tipicos botones que
encontramos en aplicaciones y pginas web. Mas adelante veremos
como utilizarlos para recoger informacin a travs de Lingo.
Las herramienta siguiente nos sirve para asignar un color de
fondo y frontal a nuestras figuras, campos de texto, etc..
Las ltimas herramientas son las de color y grosor de linea.

Inspector de Texto.
Men Window > Inspectors > Text.
Este es el inspector de texto.

Aqui asignamos tipos de letra, alineacin, espacio entre lineas, etc, para los textos y campos de texto.

La ventana Behavoir.
Men Window > Inspectors > Behavoir.
Este es un pequeo asistente que nos
permite asignar Scripts de Lingo, sin
necesidad de escribir el cdigo, sino
seleccionando los handlers y las
acciones que queramos ejecutar. Mas
adelante veremos los conceptos de
handler y script con mucho ms
detalle.
Utilizar la ventana Behavior no es la
forma ms limpia de programar en
Director, y siempre que podamos,
debemos escribir el cdigo nosotros
mismos. Esto no es una simple
cuestin de estilo, sino que el abuso de
los scripts generados en la ventana
behavior puede llegar a saturar
proyectos medianamente grandes,
provocando comportamientos
inesperados.
Las indicaciones del grfico, de
momento, son lo suficientemente
explicativas. Cuando entremos en
temas de Lingo, aprenderemos a
utilizar los scripts de forma extensa y
pormenorizada.

La ventana Score.
Men Window > Score.

El Score, es sin duda, la ventana que ms intimida a los principiantes que se acercan a Director. Sin embargo,
una vez que comprendemos sus funciones, y empezamos a hacer nuestros primeros juegos en ella, se va
transformando simplemente en una herramienta poderosa y verstil.
Debemos entender el Score, como un secuenciador, o una partitura, en donde colocamos todos los elementos
de nuestra pelicula.
Cuando la cabeza de reproduccin comienza, va leyendo todo lo que encuentra, a la velocidad que le
hayamos asignado, interpretando y obedeciendo a los scripts que hayamos puesto en su camino y moviendo o
mostrando los sprites que hayamos colocado en los canales.
En el grfico inferior vemos las partes principales de la ventana score.
En el capitulo 2 la utilizaremos masivamente para realizar nuestra primera animacin.

Estas son las principales ventanas de Director. Confome vayamos avanzando veremos otras ventanas y otras
funciones de Director, relacionndolas directamente con su uso en los ejemplos.
En el siguiente capitulo veremos, paso a paso, como realizar nuestra primera animacin en Director, y como
exportarla a video digital. Luego nos iremos adentrando en la utilizacin del sonido, video y comenzaremos a

utilizar Lingo para crear la interactividad que necesita nuestra pelicula para converitrse en una aplicacin
multimedia, con ejemplos paso a paso, para aprender todo lo necesario, para dominar Director y la
multimedia de autor.

Importar grficos.
En este capitulo vamos a ver como se importan bitmaps de Photoshop o cualquier otro editor de imagenes en
Director.
Tambin veremos algunas propiedades de los bitmaps.
En Macintosh, si se utiliza la versin 5 de Director solo podemos importar archivos con formato PICT y el
Windows en formato BMP. En la versin 7 de Director esto se extiende a una serie mas larga de posibilidades de
importacin de grficos, como por ejemplo, GIF, JPEG, PNG, PICT, etc..
A la hora de importar imgenes en Director es muy importante pensar para qu las vamos utilizar, para decidir el
formato correcto. Una pantalla de ordenador funcionando a 256 colores corresponde a 8 bits de resolucin, una
pantalla a miles de colores corresponde a 16 bits, y una pantalla a millones de colores corresponde a 32 bits.
Si queremos mostrar fotografas a alta resolucin podemos optar por 16 32 bits, pero si lo que importamos son
imgenes para animacin ser suficiente importarlas a 8 bits de profundidad de color, de este modo nuestra pelicula
ocupar menos memoria y funcionar ms rpido.
No tiene en absoluto ningn sentido que realizemos una animacin con imagenes a 32 bits, porque por un lado
nuestra pelicula ocupar demasiado y se arrastrar a velocidad de caracol en un CD Rom de 4X velocidad, incluso
en CD Roms de velocidad mayor, la transferencia de datos en mucho menor que la del disco duro. Por eso es
conveniente probar las peliculas directamente en CD antes de distribuirlas para evitarnos sorpresas.

Importar grficos.
Men File > Import.
Partiendo de la base de que tenemos los grficos
preparados en su carpeta o directorio
correspondiente, vamos al menu File > Import,
y obtendremos una ventana similar a la mostrada
en el ejemplo.
En el ejemplo vemos una pelicula QuickTime, un
grfico en formato PICT, una pelicula de
Director 7, y un archivo de sonido en formato
AIF.
Si queremos importar un solo archivo,
deleccionamos en la parte superior el archivo y
pulsamos "IMPORT", de este modo pasaremos a
la pantalla siguiente en funcin del tipo de
archivo que hayamos importado.
Si queremos importar ms de un archivo a la vez,

vamos seleccionando los archivos y pulsando el


botn "ADD", de este modo los archivos que
sern importados se van alineando en la parte
inferior, y al pulsar "IMPORT", se importarn
todos los archivos que hayan sido pasados a la
ventana inferior.
Si queremos eliminar algun archivo de la
seleccin, lo seleccionamos en la parte inferior y
pulsamos "REMOVE".

Una vez le hemos dado al botn "IMPORT" y le hemos expresado nuestra conformidad a Director, nos aparece una
ventana similar a la siguiente en donde podemos fijar algunos ajustes.

Aqui podemos ajustar la profundidad de color, en el ejemplo 8 bits (256 colores), y podemos asignarle una paleta
de color.
Lo ms usual para empezar es asignarle la paleta de color de nuestro sistema, bien sea Macintosh PC y activar la
opcin "Dither" para que los degradados de color de la imagen sean lo ms suaves posible.
.............
Una vez le damos a "OK" el proceso de importar se ha terminado y el grfico pasa a ser parte de la ventana Cast.
Por defecto el grfico se colocar en la primera casilla libre que encuentre el la ventana Cast, o bien, si teniamos

seleccionada una casilla concreta antes de importar, el grfico se colocar en esta casilla.

Ahora vamos a ver algunas propiedades que podemos ajustar en la ventana Cast para los archivos grficos, para
esto seleccionamos el grfico y pulsamos el botn superior con el simbolo: (
)

Con esto accedemos a las propiedades del miembro seleccionado en la ventana Cast.
Conviene recordar que estos ajustes son distintos segn que tipo de miembro tengamos en el Cast.
Esta es la ventana que nos aparece para los miembros de reparto grficos.
En esta explicacin, asi como sucede en alguna otra, omitimos de momento algunas cosas que abordaremos ms
adelante.

En primer lugar vemos, que tanto en la ventana Cast como aqui, Director ha recordado el nombre original del
grfico, pero siempre podemos cambiarlo en esta ventana o directamente en la ventana Cast.
- La Opcin "Highlight When Clicked", har que nuestro grafico se ilumine, invirtiendo sus colores al hacer clic

sobre l, cuando sea colocado en el escenario.


- La opcin "Dither" aplica el efecto "Dithering" (Suavizado) a los grficos.
- Luego tenemos los ajustes de transparencia Alpha para los graficos de 32 bits (Solo en Director 7).
- Y por ltimo las preferencias de descarga en memoria (Unload) de ese miembro cuando sea utilizado.
Este tema lo veremos con mayor detalle cuando abordemos la gestin de memoria.
Bien, ya tenemos el grfico importado y hemos visto sus particularidades en la ventana Cast, pero an hay otro
modo de modificar los ajustes para los grficos en Director, como vemos a continuacin.

"Transform Bitmap".
Men Modify > Transform Bitmap.

En esta ventana siempre podemos cambiar en ltima instancia, las particularidades del grfico.
Recordad que esta opcin del men "Modify" se encuentra desactivada, si no est seleccionado un grfico en la
ventana Cast.

En el siguiente capitulo veremos como importar archivos de sonido y video en Director.

Importar sonidos.
El sonido apenas tiene particularidades a la hora de importar, pero debemos tener muy en cuenta el
tamao del archivo de sonido que importamos. Por lo general en un editor de sonido podemos ajustar la
resolucin del sonido de igual modo que hacemos con los grficos en un editor de imgenes.
En Macintosh podemos importar basicamente sonidos AIFF, o System 7 Sound, y en la versin 7 de
Director tambin en Formato Sun.au, que es el formato de sonido utilizado por las applets Java.
Para ambas plataformas Macintosh y PC el formato de sonido recomendado es AIFF. Asi mantendremos
la maxima compatibilidad entre las dos plataformas, ya que Director es multiplataforma, o sea, que una
pelicula de director construida en Macintosh se puede abrir directamente en la misma versin de director
de PC.
La fecuencia de muestreo recomendada para el sonido (a ajustar en nuestro editor de sonido preferido),
es de 22,050 kHz 11,025 kHz. Los sonidos con frecuencia superior a esta, pueden bloquear una pelicula
ya que hay que tener en cuenta que por lo general cuando ponemos en una pelicula una animacin grfica
y un sonido, estamos obligando al procesador a realizar dos operaciones, una actualizar el grfico y otra
leer y reproducir el archivo de sonido.
Siempre pensad como se reproduciria vuestro material multimedia en un PC de oficina, del ao catapn,
con un CD de doble velocidad, y con un usuario malvolo, capaz de hacer volar el mundo con su errtico
ratn... vuestro programa tiene que ser no slo rpido en condiciones adversas, sino tambin blindado.

Importar sonido.
Aunque el proceso de importar sonido es exactamente el mismo que a la hora de importar un grfico, el
sonido tiene menos peculiaridades en este proceso que los grficos.

En la ventana Cast, vemos ahora, al lado del grfico, nuestro primer sonido importado.
Fijaos en los iconos de ambos, son diferentes, esto nos ayuda a identificar los miembros de reparto en el
Cast de forma rpida.

Si hacemos clic sobre el botn:


, con el miembro sonido seleccionado en el Cast, veremos que ahora
nos sale otra ventana diferente, acorde con el nuevo miembro del reparto.

Ms facil de entender que en el caso de los grficos, la ventana de propiedades del sonido es ms simple.
Prcticamente tenemos slo la opcin de "Loop", que hace que nuestro sonido se reproduzca de forma
repetitiva, y la opcin "Unload" que de forma similar al caso de los grficos regula la prioridad en la
purga de miembros que no son utilizados en un momento dado.

En el siguiente capitulo veremos las propiedades y como importar video, y tambin como incorporar al
escenario los elementos multimedia que hemos importado.

Importar videos.
El video es el componente multimedia de ms peso, esto quiere decir que a cualquier ordenador le cuesta
mucho esfuerzo reproducir video. Con el video digital debemos tener an ms cuidado que con el sonido,
ya que aparte de que un video de unos pocos segundos a 320 X 240 pixels ocupa varios megas en el disco
duro, la reproduccin de este en pantalla es una tarea pesada para cualquier tipo de ordenador.
Si el video adems tiene sonido debemos vigilar que el formato del sonido no sea excesivamente alto, si no
queremos que nuestro video vaya a saltos y se coma fotogramas intentando sincronizar la imagen con el
sonido.
Sobra decir que es tarea imposible intentar reproducir a la vez dos videos con sonido en pantalla a un
tiempo y esperar un resultado lejanamente aceptable.
Aunque podemos hacer video digital al tamao que queramos en un programa editor de video, como
Adobe Premiere, hay algunos formatos estndares que nos convendr usar.
El primero es el formato estndar QuickTime (320 X 240 pixels). Este formato es el ms grande
recomendable a la hora de insertar video en nuestra aplicacin multimedia.
Si podemos, debemos utilizar otros formatos ms pequeos, que se reproducirn ms rpido, con la
consiguiente mejora general de nuestra aplicacin en cuanto a rendimiento. Dos buenos tamaos son (280
X 210 pixels) (160 X 120).
Importar video:
El proceso de importar video es el mismo que el de importar sonido, apenas disponemos de sofisticaciones
en Director a la hora de importar video, pero si tenemos muchas opciones de variarlo, modificar y dirigir
su reproduccin en Lingo, y tambin ajustando sus propiedades en la ventana Cast.
Abordaremos las capacidades del lenguaje Lingo para controlar el video, ms adelante, cuando estemos
aprendiendo Lingo, ahora vamos a ver que propiedades del video podemos ajustar en el Cast una vez
importado.
Para este ejemplo he utilizado Director 5.
Ya que el proceso de importar es el mismo que en el sonido, (Menu File > Import), vamos a pasar a la
ventana Cast, en donde tenemos el video ya importado en la casilla 3.

Como vemos, el video se ajusta como otro miembro del reparto ms, disponible desde ahora en nuestra
pelicula.
Si pulsamos el botn info (
) del cast, obtendremos la ventana siguiente y podemos modificar alguna
de sus propiedades:

Aqui vemos las propiedades del video a las que podemos acceder en la ventana Cast.
Playback:
Este es el principal control de la reproduccin de video en Director.
Video: Aqui escojemos si queremos que se vea el video en el escenario, o bien sea invisible, pero
conservando las propiedades del sonido.
Sound: Aqui decidimos si nuestro video tendr sonido o no, es conveniente desactivar esta opcin
si el video que hemos importado no tiene sonido, asi QuickTime no intentar ajustar la imagen a un
sonido hipottico, y el video funcionar ms fluidamente.

Paused: Con esta opcion definimos si el video, por defecto comienza en pausa, siempre podemos
arrancarlo luego con Lingo.
Loop: Con esta propiedad activada el video se reproducir de forma continua, volviendo al
principio cada vez que haya terminado, a no ser que eliminemos esta caracteristica desde Lingo, o
volvamos a la ventana Cast para desactivarla.
Options:
La opcin Direct to To Stage, es una propiedad por defecto del video. Normalmente el video nunca
deja que otro elemento se ponga sobre el, bien sea texto, un grfico, etc. si un grfico pasa por
delante del video, el video se pondr sobre l de forma que no podremos verlo mientras se encuentre
en el mbito del video.
Si desactivamos esta opcin, el video dejar pasar sobre el a los dems miembros de la pelicula,
pero en contrapartida, funcionar a saltos y de forma poco fluida, por lo que no conviene desactivar
esta opcin.
La opcion Show Controler simplemente nos dejar ver la barra de progreso de la pelicula
QuickTime, mientras funciona en el escenario.
Video:
En este menu tenemos dos opciones:

- La primera opcin, Sync to Soundtrack, habilita que QuickTime ajuste el sonido a la imagen, de
forma que una no vaya ms rpido que la otra.
- La segunda, Play Every Frame (No Sound), elimina el sonido del video, caso de tenerlo, e
inabilita el intento de QuickTIme por sincronizar imagen y sonido, con lo que el video ir ms
fluido en pantalla.
Las Opciones Enable Preload y Unload, son para la gestin de la carga y descarga en memoria del
video.
De momento es mejor no tocar estas opciones, hasta cuando abordemos la gestin de memoria.
.. Y esto es todo para empezar con el video, es recomendable hacer pruebas uno mismo, importando y
ajustando video.
Ms adelante veremos como tratar con el video en el escenario, y luego como controlarlo con Lingo.

Trabajar en el Score.

Ya hemos visto todo el proceso de importar multimedia para nuestar pelicula, y ahora vamos a ver como
colocarla en el Score y en el escenario. Si hemos seguido los pasos de los anteriores captulos tendremos en la
ventana Cast, un grfico, un sonido y un vdeo.

Para este tutorial yo estoy utilizando la versin 7 de Director, pero tratar de no sealar aquellas
especificaciones propias de esta versin, y explicar el proceso en otras versiones de Director, para facilitar lo
mximo posible la adaptacin al curso de aquellos que utilicen versiones anteriores de Director.
Veamos como colocar nuestros personajes (miembros del reparto) en el escenario de la pelicula:
Para empezar vamos a ir al men: Modify > Movie > Properties.
Aqui obtenemos la ventana en la que podemos ajustar las principales propiedades la la pelicula. Solo
explicar aquellos ajustes semejantes en casi todas las versiones de Director:
Stage Size: En este apartado podemos modificar el tamao del escenario de la pelicula. El tamao por defecto
es 640 X 480 pixels, que corresponde a un monitor de 15 pulgadas, pero podemos ajustar el tamao segn se
acomode mejor a nuestras necesidades. Cuando tratemos la gestin de ventanas flotantes en Director, veremos
la importancia de ajustar el tamao de las peliculas que luego sern ventanas flotantes.
Stage Location: Aqui ajustamos la colocacin del escenario con respecto a la pantalla.
Stage Color: En este menu podemos variar el color de fondo del escenario.
Default Palette: Esta es la paleta de color de sistema por defecto de la pelicula. Para empezar es conveniente
escoger System Mac System Windows, segn en que plataforma estemos desarrollando la pelicula.

Una vez tenemos los miembros de reparto colocados en la ventana Cast, vamos a colocarlos en el escenario:

Cogiendo y arrastrando un mienbro del reparto sobre la ventana Score o sobre el escenario directamente, ya
habremos colocado el miembro en el escenario, por lo que a partir de ahora cuando nos refiramos a este
personaje, colocado en el Score le llamaremos "Sprite". En el grfico he sealado con un circulo rojo el menu
de la ventana Score en donde podemos variar la tinta de mezcla para el sprite. Es conveniente probar uno
mismo todas las opciones para familiarizarnos con ellas.
Como vemos en el ejemplo he colocado el sprite en el cuadro 5 y se extiende en el tiempo tres cuadros hasta
el cuadro 7.
Los puntos blancos sealan una posicin del sprite y los cuadros blancos del final, sealan el punto final del
sprite. Si quisiramos estirar en el tiempo, hasta el cuadro 20, por ejemplo, la presencia del Sprite,
simplemente debemos coger el Sprite por su punto final, mientras pulsamos la tecla "ALT" y arrastrarlo hasta
el cuadro 20, con lo que, durante la pelicula, este sprite ahora ser visible desde el cuadro 5 hasta el cuadro
20.

Este proceso es distinto en versiones anteriores a la versin 6 de Director. Incluso el Score tiene otra
apariencia, aunque en el fondo, el funcionamiento es muy parecido. Para prolongar en el tiempo un sprite en
versiones anteriores de Director, debemos seleccionar el sprite y la porcin de cuadros sobre la que queramos
estirar su presencia, e ir al men Modify > In Beetwen. As veremos como los cuadros seleccionados se llenan

con el sprite, prolongando su presencia en la pelicula hasta el ultimo cuadro seleccionado.


En el siguiente capitulo, donde abordaremos la animacin en Director, veremos muchos ejemplos a travs de
los cuales perfeccionar el entendimiento de la ventana Score. Aunque ahora podais sentiros confusos, os
aconsejo practicar vosotros mismos, porque luego seguir ayudndoos a entenderlo.
Colocar el sonido.
Colocar sonido es similar a colocar un grfico pero solamente podemos arrastrarlo sobre alguno de los dos
canales de sonido del Score. Para prolongarlo en el tiempo procederemos de la misma manera que con los
sprites grficos del ejemplo anterior.

En Director tenemos dos canales para el sonido, que podemos usar a un tiempo, de forma ambos canales
sonarn juntos si tienen ambos sonido en una misma porcin de tiempo. Tenemos muchsimas posibilidades
de aadir ms sonidos y variar los existentes a travs de Lingo. En el siguiente capitulo, en donde
realizaremos la primera animacin, veremos como realizar ajustes en la reproduccin el sonido, a travs del
canal de tiempo.
Colocar el video.
Bsicamente, de principio, podemos colocar y ajustar el video de la misma forma que hacemos con los sprites
grficos: prolongndolo en el tiempo durante la porcin de pelicula en la que queremos que se reproduzca.
Debido a las muchas particularidades del video, ms adelante merecer un captulo aparte, en cuanto a su
manejo en el Score y a su control desde el lenguaje Lingo. De principio nos conviene usarlo como cualquier
otro sprite grfico. Y explorar uno mismo, importando y colocando sprites en el Score, para familiarizarnos lo
mximo posible con esta ventana que luego ser en donde realizaremos la mayor parte del trabajo en Director.
En este caso es muy importante repasar los capitulos que no se hayan entendido bien, y realizar uno mismo
ejercicios hasta obtener la mayor soltura posible.

Primera animacin.
Despues de ver como se importan los elementos en Director, vamos a ver como realizar la primera animacin.
En primer lugar hemos importado un ciclista en formato pict, y ahora lo pondremos a correr por el escenario.
Para esto podemos arrastrar el ciclista desde la ventana Cast hasta el escenario o hasta la ventana Score. De
forma que pasara a ocupar uno o varios cuadros por defecto en el score, apareciendo tambien en el escenario.
Esta animacin queremos que comienze en el cuadro 5 y vamos a extender la animacin hasta el cuadro 15.
Para esto cogemos el sprite por su punto final en el Score y lo encogemos para que solo ocupe de principio un
cuadro, que ser el punto de partida de la animacin.

En el menu "Modify > Movie > Properties", cambiamos el color de fondo de la pelicula al color que prefiramos.
y en el score asignamos la tinta "Background Transparent" al Sprite ciclista, para que sus partes blancas pasen a
ser transparentes.
Ahora con este unico cuadro de partida de la animacin seleccionado en el score, colocamos en el escenario el
ciclista en el punto de partida de la animacin, en este caso entrando por la parte izquierda del escenario.

Una vez colocado el cuadro 5 en su punto de partida vamos a asignar un punto intermedio en la animacin en el
cuadro 10, en donde el ciclista ya se encontrar en el cento del escenario, a medio camino de su animacin
completa.
Para esto, pulsando la tecla "ALT", arrastramos el sprite hasta el cuadro 10. Vemos como no movemos el cuadro
5 hasta la posicion 10 sino que nos llevamos una copia del sprire hasta esta posicin. Si no hubieramos pulsado
la tecla "ALT" simplemente habriamos movido el cuadro 5 hasta la posicin 10.
Con esto estamos asignando un nuevo tiempo en la pelicula, en el que nuestro actor estar en otra posicin.

Con el sprite seleccionado en el cuadro 10, vamos de nuevo al escenario y colocamos el ciclista en el centro del
escenario.
Esta ser su posicin cuando llegue la reproduccin al cuadro 10.

Como vemos Director ha creado una linea de animacin, desde el punto inicial, hasta la nueva posicin en el
cuadro 15, generando todos los pasos intermedios. Ahora vamos a hacer la misma operacin pero estirando el
sprite hasta la posicin 15, en donde el ciclista ya desaparecer del escenario por la parte derecha.

Para esto hacemos lo mismo que en el caso anterior: estiramos una copia del sprite con la tecla "ALT
pulsada hasta la posicin 20, y en esa posicin colocamos el sprite en el escenario, desapareciendo ya por
la parte derecha de la pantalla.

Con esto tenemos un primera animacin bsica. Si vamos al men "Control > Play" veremos como el ciclista
recorre el escenario de izquierda a derecha. Si queremos ajustar la trayectoria de movimiento, podemos recurrir
al menu "Modify > Sprite > Tweening", para definir la trayectoria del sprite como mejor nos convenga.

Ahora vamos a ver como asignar el tiempo de reproduccin.


En primer lugar, la ventana "Control Panel" no la debemos usar para asignar tiempo a la pelicula, porque lo har
de forma virtual, no real. La pelicula solo responde y conserva los controles de velocidad asignados en el score o
con Lingo.
Para ajustar la velocidad de reproduccin, seleccionamos un cuadro en el canal de tiempo del score, en el
principio de la animacin del ciclista (cuadro 5).

Y con este cuadro seleccionado vamos al men "Modify > Frame > Tempo", en donde nos sale esta siguiente
ventana en donde podemos asignar el tiempo, en el ejemplo 5 fps. Debemos cuidar que la velocidad de la
pelicula no sea excesiva, para que no sobrepase la capacidad de un procesador poco potente, ms an cuando
est corriendo sobre un CD.

Mas adelante veremos otras aplicaciones de esta ventana, pero ahora nos vale con saber asignar velocidad para
los cuadros de la pelicula.

Para prolongar el area de tiempo especificado en la pelicula, simplemente seleccionamos el canal de tiempo, y
con la tecla "ALT" pulsada, arrastramos el sprite, estirndolo, por ejemplo, hasta el cuadro 15, en donde termina
la animacin de ciclista. Asi podemos asignar diferentes velocidades a diferentes partes de la pelicula.
Conviene probar uno mismo a hacer animaciones, metiendo graficos de fondo y superponiendo personajes.
Recordad que conforme poneis sprites en el escenario, el sprite del cuadro 2 estar por delante del sprite del
cuadro 1 y asi sucesivamente.
Tambien es conveniente probar las tintas de mezcla de los sprites, y probar distintas velocidades de
reproduccin. Esta es la base para trabajar en director: controlar los elementos del escenario.
En el siguiente capitulo veremos como realizar "FilmLoops", siendo una de las tcnicas ms interesantes de la
animacin mltiple en Director, y en el siguiente capitulo, comenzaremos a controlar nuestra pelicula con
pequeas dosis de Lingo, creando la primera navegacin interactiva.

FilmLoops.
(Descargar pelicula de ejemplo)
Si queremos reproducir la animacin de una persona o un perro caminando, tenemos una animacin un
poco compleja:
Por un lado el mueco debe ir moviendo los brazos y las piernas mientras avanza hacia delante, con lo cual
en cada paso tenemos cuatro movimientos para los brazos y piernas, a la vez tendremos que hacer avanzar el
mueco hacia delante con todos sus movimientos de andar.
Otro caso puede ser que necesitamos, por ejemplo, un reloj, que siempre de vueltas sin parar,
independientemente del curso del resto de la animacin, y que queremos manipular como un solo sprite.
Para solucionar este tipo de animaciones autnomas tenemos los FimLoops, que son muy fciles de utilizar
y nos proporcionan una ayuda muy importante en casi todos los trabajos con Director.
Para hacer un FilmLoop, debemos partir de los grficos importados que conformarn la animacin del objeto.
En este ejemplo vemos los ocho grficos que componen un reloj cuyas agujas dan vueltas.

Y aqui vemos el movimiento montado en una animacin:

Veamos el proceso de crear FilmLoops.


Primero importamos los grficos que conformarn el conjunto del FilmLoop, y los dejamos ordenados en la
ventana Cast.
Luego, seleccionamos juntos, apretando la tecla maysculas, todos los graficos del FilmLoop, y los
arrastramos a un lugar libre en el Score.
Veremos que los graficos se nos alinean en el Score, en el mismo cuadro, hacia abajo, ocupando los cuadros
del score en vertical. Para colocar directamente la animacin en horizontal vamos al menu "Modify > Space
to time".
Tambien podemos, simplemente, ir colocando un grfico delante del otro para formar una animacin simple
que luego convertiremos en FilmLoop.

Una vez que tenemos colocados y alineados los sprites, los seleccionamos juntos de nuevo en el score y los
arrastramos juntos hacia una casilla libre en la ventana Cast, veremos como se nos abre un cuadro de dialogo
de FilmLoop en donde podemos poner nombre a nuestro FilmLoop. Hecho esto, limpiamos el Score de los
sprites que formaron el FilmLoop.
Otro modo de hacerlo es copiando todos los sprites del FilmLoop en el Score, para luego pegarlos en una
casilla libre de la ventana Cast, veremos como tambin se nos abre un pequeo cuadro de dialogo en donde
podemos dar nombre al nuevo FilmLoop.

A partir de ahora cuando arrastremos al escenario o al score el nuevo FilmLoop desde el Cast, este sera un
solo sprite, pero contendr un bucle con todos los movimientos que lo conforman.
De todas formas no podremos borrar los grficos que conforman el filmloop de la ventana Cast porque el
FilmLoop solo es una referencia a estos grficos.
---------------------------------------------------------------En el prximo capitulo empezamos con Lingo...

Botones interactivos.
Muchas veces probablemente, utilizando una aplicacin multimedia o un programa hemos visto esos botones
que cambian de forma al rozar o al pulsar sobre ellos. Veamos como se hace esto en Director.
En primer lugar tenemos importamos en la ventana Cast los tres grficos del botn: El botn en reposo, rozado y
pulsado.
En este caso ocuparn las casillas del Cast, 4, 5 y 6 respectivamente.
Y adems importamos un sonido que ser el que se reproduzca al pulsar sobre el botn, en el ejemplo se llama
"CLIC", y ocupar la casilla n 7 del Cast, por ejemplo.
Los tres estados del botn:

Ahora debemos colocar en el score el boton en reposo, en este caso a partir del cuadro 5 ocupando tres cuadros
del Score.
En el ultimo de los tres cuadros, hacemos doble clic en el canal de script, con lo que se nos abre la ventana script
para poder escribir nuestro codigo Lingo que se ocupara de controlar distintos aspectos:
on exitFrame
go to the frame
-- al intentar salir del cuadro le decimos a Director que permanezca en el mismo lugar. --

if rollOver(1) = true then


-- si el raton roza el sprite situado en el canal 1 del Score (TRUE significa verdadero) --

puppetSprite 1 true
-- declaramos "puppet", el sprite 1 con lo que pasa a ser controlado por Lingo. --

set the memberNum of sprite 1 to 5


--cambiamos el numero de cast del sprite 1 por el correspondiente al boton rozado. --

updatestage
-- forzamos a actualizar el escenario. --

else if rollOver(1) = false then


-- sin embargo, si el raton NO ROZA el sprite 1. --

set the puppet of sprite 1 to false

-- eliminamos el "puppet" del sprite por lo que deja de estar controlado por Lingo y vuelve a su estado original --

updatestage
end if
-- fin de la sentencia if() --

end
-- fin del Script --

Si ahora ponemos a andar la pelicula, podremos probar nuestro script rozando el botn con el cursor. Pero aun
falta el Script que har que el botn cambie al pulsar sobre l y emita un sonido.
Para esto seleccionamos el sprite botn en el frame o frames en donde queremos activar su script, en este caso
en la ultima casilla en donde hemos colocado el script de score anterior, ya que es ahi donde la pelicula se
detiene. Con el Sprite seleccionado, vamos al men: Modify > Sprite > Script: con los que se nos abre otra
venatna de Script con el handler:
on mouseDown
end
Aqui escribimos:
on mouseDown
-- nuevo handler que captura el clic del ratn. --

puppetSound "CLIC"
-- que se reproduzca el sonido importado con el nombre "CLIC". --

puppetSprite 1 true
-- Hacemos controlable desde Lingo el botn. --

set the memberNum of sprite 1 to 6


-- cambiamos el boton en reposo por el grfico del botn pulsado. --

updatestage
-- actualizamos el escenario. --

end mouseDown
-- terminamos el handler mouseDown. --

on mouseUp
-- nuevo handler para cuando levantamos el botn del ratn --

set the puppet of sprite 1 to false


-- declaramos "false", el control de Lingo sobre el grfico cuando levantemos el boton del raton,
de esta forma al soltar el ratn, el botn vuelve a su estado de reposo. --

upatestage

end mouseUp
end

Con esto tenemos un botn, o los que queramos, que responden a nuestras acciones con el ratn.
Lo explicado anteriormente es compatible con todas las versiones de Director.
Sin embargo, las nuevas versiones han avanzado bastante al respecto, por lo que prximamente habr un capitulo
exaustivo sobre los principales eventos de ratn para las nuevas versiones de Director tratando los handlers:
"on mouseEnter me", "on mouseLeave me", "on mouseDown me", "the mouseLoc", "the mouseWord", etc...

Eventos del teclado.


(Descargar pelicula de ejemplo)
Los eventos de teclado "KeyDown" y "KeyUp" comunes a casi todos los lenguajes de programacin,
responden a los eventos de pulsar o soltar una tecla respectivamente. En este capitulo vamos a ver un
interesante ejercicio con el teclado, de forma que moveremos un sprite por el escenario segun pulsemos las
teclas:
J - para ir a la izquierda.
K -para ir a la derecha.
U -para ir hacia arriba.
N -para ir hacia abajo.
En este captulo se incluye una pelicula de ejemplo de este ejercicio, en Director 6, llamada "Key.dir".
...................................................................................
Para comenzar colocamos una figura en el score centrndola en el escenario, a ese cuadro le ponemos una
marca que en este caso hemos llamado "M". Y el el cuadro de script hacemos doble clic para editar un
script de score que mantendr la pelicula en el mismo cuadro y responder a los eventos del teclado.

El script "mgico" ser este:


on exitFrame
go to the frame
-- QUEDARSE ESPERANDO EN EL CUADRO -on keyDown
if the key = "J" then
-- SI LA TECLA ES "J"... -puppetsprite 1 true

-- ACTIVAR EL SPRITE 1 -set h = the locH of sprite 1


set the locH of sprite 1 to H -10
-- MOVER EL SPRITE A SU POSICION -10 -updatestage
-- "UPDATESTAGE" FUERZA A ACTUALIZAR
EL ESCENARIO -else if the key = "K" then
-- PERO SI LA TELCA ES "K"... -puppetsprite 1 true
set h = the locH of sprite 1
set the locH of sprite 1 to H +10
-- MOVER EL SPRITE A SU POSICION +10 -updatestage
else if the key = "U" then
puppetsprite 1 true
set V = the locV of sprite 1
set the locV of sprite 1 to V -10
updatestage
else if the key = "N" then
puppetsprite 1 true
set V = the locV of sprite 1
set the locV of sprite 1 to V +10
updatestage
end if
-- FIN DE LA SENTENCIA CONDICIONAL "IF" -end

Para gente que no ha programado nunca les recuerdo que Director no facilita las cosas hasta el punto que
quiz imaginan, aunque si lo hace en gran medida. A aquellos con conocimientos de programacin,
Director les puede resultar tedioso de aprender tambin aunque por otros motivos. Cuando me comentan
cosas como: "Es que Director es muy difcil...", yo lo comprendo, pero la pregunta es:
"Te entusiasma programar?".

Si es asi, Director te tendr cogido de por vida , incluso otros lenguajes del alto nivel llegarn a tu vida
tarde o temprano.Sino, es que estas pasando un extrao fin de semana, pero lo olvidars pronto.
Por esto os aconsejo que os leais el codigo anterior, a mi me parece lo suficientemente autoexplicativo, y
no se me ocurre mejor ejercicio que aconsejaros que os lo leais intentando entender por vosotros mismos
cada linea.

El manejo de texto.
(Descargar pelicula de ejemplo)

Casi nada se puede conseguir de un programa sin las funciones de entrada y salida de datos o informacin.
Director no es solo un programa para hacer presentaciones, sino que va mucho mas alla, llegando a conformar
verdaderas aplicaciones inteligentes que realizan clculos e interactuan con el usuario mas alla de lo que se
espera de un programa de presentaciones. Sabiendo de un ordenador es simplemente una supercalculadora, los
programas en general actan de puente entre nuestros deseos y el supercerebro del ordenador, solicitandole
calculos y haciendole gestionar variables y datos.
El manejo de texto, y las entradas del usuario por parte de Director es extremadamente sencillo y potente. Asi
podemos saber que respondio el usuario a nuestra pregunta, o si la clave de acceso al programa es la correcta o
no, o realizar clculos matemticos a partir de los datos introducidos por el usuario.
Lo mas delicado es diferenciar entre cajas de texto y campos de
texto.
Las cajas de texto (1), nos permiten poner textos en el escenario
con la tipografia de la que dispongamos en nuestro ordenador para
realizar diseos y titulares. Estas cajas de texto, una vez creada la
aplicacion se convierten automticamente en Bitmaps con una
resolucin muy aceptable, con lo que el usuario no necesita tener
esa tipografia con la que hemos diseado el titular para poder
visualizarla y por lo tanto no necesitamos distribuir junto con la
aplicacin el tipo de letra con el que hemos diseado texto durante
la construccin del proyecto.
Sin embargo, las cajas de texto no responden a las rdenes de
Lingo, de forma que no podemos comprobar que texto est escrito
en la caja en un momento dado, ni podemos variarlo desde un script
de Lingo, ni podemos permitir que el usuario lo edite y reescriba
durante la ejecucin.
Los campos de texto (2), son algo diferente, estos no se convierten
en bitmaps durante la ejecucin sino que permanecen funcionales
en todo momento como lugares en donde el usuario puede escribir,
o bien en donde podemos comprobar desde Lingo el contenido o
reescribirlo. Los campos de texto si responden a muchos script de
Lingo, como veremos ahora.
En el boton de propiedades:

de la ventana cast puede experimentarse con distintas opciones para


los campos de texto.
Para variar el color de fondo y de texto podemos usar los selectores
de color de la paleta de herramientas.

Lingo para manejo de texto:


Un texto para un programa es una variable, y una variable es un tipo de dato, bien sea una cadena (string) , un
numero entero (integer) , un numero en coma flotante (float), o un valor booleano (TRUE o FALSE).
Yo abordo estos tutoriales bajo el supuesto de que todos tienen una minima experiencia en programacin, de otro
modo me seria imposible afrontar esto. Para aquellos que esten poco familiarizados con estos y otros conceptos,
les recuerdo que pueden enviar sus preguntas al buzn del curso para que una vez respondidas, puedan ser
consultadas por otros estudiosos, que quiza tengan las mismas dudas.
Comprobar el contenido de un campo de texto:
Bueno, supongamos que queremos saber que nos responde el usuario o que ha escrito en un campo de texto de
nuestra aplicacin. Para esto seleccionamos un campo de texto en la paleta de herramientas y los estiramos por el
escenario, ajustandolo a la medida que queramos. En el botn de informacin de la ventana Cast, deleccionamos
"editable" para el campo de texto, para permitir que el usuario pueda escribir en el, ya que de otro modo no
podria hacerlo.
El script para comprobar el contenido de un campo de texto tiene que estar encerrado en una sentencia if( )
condicional:
if field "miCampo" = "hola mundo" then
beep(2)
Si el campo de texto llamado "miCampo" contiene el texto "hola mundo", hacer sonar dos pitidos del ordenador.

else if field "miCampo" <> "hola mundo" then


beep(4)
Si el campo de texto llamado "miCampo" es distinto a "hola mundo", hacer sonar cuatro pitidos del ordenador.

end if
Este script se puede asignar a un botn de forma que al pulsar sobre l, se comprueba el contenido del campo de
texto y en funcin de esto se realiza una operacin.

Poner nuevo texto en un campo:


Para escribir nuevo texto en un campo desde Lingo, el script necesario es el siguiente:
put "me gusta Lingo" into field "miCampo"

Para poner el contenido de un campo de texto en otro campo de texto:


put field "miCampo1" into field "miCampo2"
Si cambiamos la palabra subrayada into, por after, el texto se pondr al final del texto del campo 2 sin alterar el
contenido anterior. Si escribimos en su lugar before, el nuevo contenido se pondr al principio del campo de
texto si variar el contenido anterior.
Operaciones matemticas:
Tenemos un campo de texto llamado "OP1", un segundo campo llamado "OP2" y otro llamado "RESULTADO".
Para sumar lo introducido en el campo "OP1" y lo del campo "OP2" y poner el resultado en el campo
"RESULTADO" el script seria:
Para sumar:
put field "OP1" + field "OP2" into field "RESULTADO"
Si quisieramos un resultado entero deberiamos aadir la palabra "INTEGER":
put integer (field "OP1") + integer (field "OP2") into field "RESULTADO"
Para restar:
put field "OP1" - field "OP2" into field "RESULTADO"
Para multiplicar:
put field "OP1" * field "OP2" into field "RESULTADO"
Para dividir:
put field "OP1" / field "OP2" into field "RESULTADO"
Si en algun caso, se introdujeran valores no-numericos, Director gestionara automticamente el error mostrando
el mensaje NAN (), que quiere decir mas o menos "No entiendo nada".
Se puede consultar y examinar la pelicula que acompaa a este capitulo para ver el funcionamiento de estos
ejemplos.

Navegacin interactiva.
[ Descargar la pelicula de ejemplo ]
Para construir una pelcula interactiva que se compone de distintos apartados, generalmente se habilitan
primero en el Score las diferentes secciones que representan las distintas partes de la pelicula, a las que se
llega de forma automtica o a travs de un evento de Lingo. Esto se realiza a travs de "marcas", que
sealan donde est cada parte concreta de la pelicula con su nombre propio.
Para crear una marca nueva, pulsamos sobre la barra superior del score, con lo que nos aparecer un
pequeo tringulo invertido al que podemos poner una etiqueta o cambiar de sitio arrastrndolo sobre la
barra de marcas.

En este ejemplo, tenemos tres marcas: "menu", "foto1" y "foto2", diferenciando tres partes en el score.
La primera le llamamos "menu" y es donde tenemos los botones: "ver foto 1" y "ver foto 2". Las otras dos
marcas contienen dos fotos diferentes, con el botn "volver al men".
Al final de cada secuencia hemos colocado en script
on exitFrame
go to the frame
end
Para impedir que llegados a ese punto la cabeza de reproduccin siga adelante.

Cada uno de los botones de esta pelicula tiene un script "go to" referenciando a una marca de la pelicula.
Asi, el sprite botn "ver foto 1" tiene asignado el script:
on mouseDown me
go to "foto1"
end
Y el sprite botn "volver al menu", tiene asignado el script:
on mouseDown me
go to "menu"
end
Para aquellos familiarizados con C Visual Basic, quiero indicaros que el "go to" de Director no es una
llamada a funcin o un salto de cdigo "chapuzero" como en el caso de estos dos anteriores lenguajes,
sino que lo que se hace es referenciar o enviar la cabeza de reproduccin directamente a la marca
especificada en la sentencia " go to". Con lo cual el "go to" de Director no solo es correcto en el entorno de
Lingo, sino que adems es imprescindible para hacer aplicaciones interactivas bsicas.
Diferencia entre el "go to" para el Score y las llamadas a funciones ( Handlers ) en Lingo:
En Director los mtodos o funciones se denominan "Handlers". Bsicamente un handler es una porcin
de cdigo independiente que contiene una o ms sentencias y operaciones, y que siempre espera a ser
llamado para funcionar.
Para crear un nuevo Handler en Director, seleccionamos el men: "Window > Script", para abrir una
nueva ventana de Script vacia. En ella escribimos el cdigo para el nuevo Handler:
on cualquierCosa ( ) -- nombre del handler -puppetSprite 1 , true
set the memberNum of sprite 1 to 4
updatestage
end
Cerramos la ventana de script y el codigo quedar esperando alli, a ser llamado desde cualquier parte de
Director para comenzar a realizar su trabajo.
Para llamar a un Handler utilizamos simplemente el nombre del Handler:
on mouseDown
cualquierCosa ( ) -- nombre del handler -end
Con lo que el Handler comenzar a hacer su trabajo.
Este modo de trabajo es universal en todos los lenguajes de programacin. De esta forma se consigue no
tener que repetir porciones de cdigo idnticas en partes diferentes del programa, sino que se agrupan en
una funcin, mtodo, o Handler, en el caso de Director, para ser llamado luego cuantas veces se necesite
desde cualquier parte del programa.

Todo esto lo desarrollaremos mejor en el siguiente captulo en donde se tratarn las variables en Director.

Navegacin interactiva.
[ Descargar la pelicula de ejemplo ]
Para construir una pelcula interactiva que se compone de distintos apartados, generalmente se habilitan
primero en el Score las diferentes secciones que representan las distintas partes de la pelicula, a las que se
llega de forma automtica o a travs de un evento de Lingo. Esto se realiza a travs de "marcas", que
sealan donde est cada parte concreta de la pelicula con su nombre propio.
Para crear una marca nueva, pulsamos sobre la barra superior del score, con lo que nos aparecer un
pequeo tringulo invertido al que podemos poner una etiqueta o cambiar de sitio arrastrndolo sobre la
barra de marcas.

En este ejemplo, tenemos tres marcas: "menu", "foto1" y "foto2", diferenciando tres partes en el score.
La primera le llamamos "menu" y es donde tenemos los botones: "ver foto 1" y "ver foto 2". Las otras dos
marcas contienen dos fotos diferentes, con el botn "volver al men".
Al final de cada secuencia hemos colocado en script
on exitFrame
go to the frame
end
Para impedir que llegados a ese punto la cabeza de reproduccin siga adelante.

Cada uno de los botones de esta pelicula tiene un script "go to" referenciando a una marca de la pelicula.
Asi, el sprite botn "ver foto 1" tiene asignado el script:
on mouseDown me
go to "foto1"
end
Y el sprite botn "volver al menu", tiene asignado el script:
on mouseDown me
go to "menu"
end
Para aquellos familiarizados con C Visual Basic, quiero indicaros que el "go to" de Director no es una
llamada a funcin o un salto de cdigo "chapuzero" como en el caso de estos dos anteriores lenguajes,
sino que lo que se hace es referenciar o enviar la cabeza de reproduccin directamente a la marca
especificada en la sentencia " go to". Con lo cual el "go to" de Director no solo es correcto en el entorno de
Lingo, sino que adems es imprescindible para hacer aplicaciones interactivas bsicas.
Diferencia entre el "go to" para el Score y las llamadas a funciones ( Handlers ) en Lingo:
En Director los mtodos o funciones se denominan "Handlers". Bsicamente un handler es una porcin
de cdigo independiente que contiene una o ms sentencias y operaciones, y que siempre espera a ser
llamado para funcionar.
Para crear un nuevo Handler en Director, seleccionamos el men: "Window > Script", para abrir una
nueva ventana de Script vacia. En ella escribimos el cdigo para el nuevo Handler:
on cualquierCosa ( ) -- nombre del handler -puppetSprite 1 , true
set the memberNum of sprite 1 to 4
updatestage
end
Cerramos la ventana de script y el codigo quedar esperando alli, a ser llamado desde cualquier parte de
Director para comenzar a realizar su trabajo.
Para llamar a un Handler utilizamos simplemente el nombre del Handler:
on mouseDown
cualquierCosa ( ) -- nombre del handler -end
Con lo que el Handler comenzar a hacer su trabajo.
Este modo de trabajo es universal en todos los lenguajes de programacin. De esta forma se consigue no
tener que repetir porciones de cdigo idnticas en partes diferentes del programa, sino que se agrupan en
una funcin, mtodo, o Handler, en el caso de Director, para ser llamado luego cuantas veces se necesite
desde cualquier parte del programa.

Utilizacin de variables.
Las variables son elementos de programacin que se crean para almacenar valores, ya sean nmeros
enteros, fraccionarios, valores booleanos (true o false), o cadenas de texto (String).
Estas variables se almacenan en porciones de memoria del ordenador. Podemos pensar que el ordenador
"recuerda" todas nuestras variables con su valor especifico.
Las variables se componen de dos partes:
nombre y valor.
El nombre de las variables no puede estar formado por frases compuestas del tipo: una variable, o empezar
por un nmero, como por ejemplo: 8numeros.
En Director podemos crear una variable simple por ejemplo asi:
set numeroCosas = 5 --(numero entero), o set nombreCosas = "Cuantas hay aqui". --(cadena de texto)
Las variables apenas nos servirian para nada si una vez creadas no pudiesemos manipular sus valores.
Una variable inicializada como: set cosas = 2, podemos aumentarla luego asi: set cosas = cosas + 5.
Tambien podemos realizar operaciones con mas de una variable a la vez:
set cosas1 = 2
set cosas2 = 3
set cuantasCosas = cosas1 + cosas2
o tambin:
set cuantasCosas = (cosas1 + cosas2) / 4
-- hemos sumado el valor de cosas1 y cosas2 y el resultado lo dividimos entre cuatro.
En las operaciones matemticas, los operadores entre parentesis son los que primero se evalan y su valor
luego es aadido a la siguiente operacion fuera de los parentesis. Esta es la jerarquia:
( (2+2) * 4) - 5
En este caso primero se suma 2+2, el valor resultante se multiplica por cuatro y a este valor final se le resta

5.

Ambito de las variables. (Variables locales y globales).


Si declaramos una variable dentro de un Handler mouseDown, por ejemplo:
on mouseDown
set cosas = cosas + 1
end
Esta variable no perdurar fuera de este handler. Podemos realizar operaciones con ella en el mbito del
handler mouseDown pero no podemos usarla en otra parte del programa. De igual modo en un Handler:
on exitFrame
set cosas = 7
end
Si hubieramos declarado la variable cosas en otra parte del programa obtendriamos un error, ya que
Director no recuerda nada sobre esa variable. Asimismo tampoco podemos usar esta variable en otro
handler o en otro cuadro e pelicula fuera del handler donde fu inicializada. En todos los lenguajes de
programacion modernos esto se hace para permitir mayor flexibilidad en la asignacion de nombres a las
variables. Una variable local asi, no crear conflictos con otra variable del mismo nombre en otra parte del
programa, aunque este procedimiento no es muy recomendable, ya que se puede prestar a confusiones del
programador, para controlar con que variable esta trabajando. Estos ejemplos eran variables locales:
definidas y con un mbito de vida restringido al handler donde fueron creadas.
Para tener variables perdurables en memoria durante todo el programa, usamos las variables globales.
Ejemplo de variable global:
global cosas
set cosas = 0
Esta variable la hemos declarado como global, por lo tanto permanecera en memoria hasta que apagemos
el ordenador. Si por ejemplo queremos llevar la cuenta de los clics que hace el usuario con el ratn,
podemos crear un Handler donde inicializar la variable global, como por ejemplo al comenzar la
ejecucin:
on startMovie
global numClics
set numClics = 0
end
Y establecer la cuenta de esta variable en otro handler mouseDown:
on mouseDown
global numClics
set numClics = numClics + 1
end

Asi podemos incluir en el handler una sentencia de comprobacin para saber si el usuario ha pulsado el
botn del ratn diez veces:
on mouseDown
global numClics
set numClics = numClics + 1
if ( numClics = 10 ) then
alert "has pulsado el ratn 10 veces"
end if
end
O llamar a esta variable desde otra parte del programa u otro Handler.
on exitFrame
global numClics
if ( numClics = 10 ) then
alert "has pulsado el ratn 10 veces"
end if
end
Este es el estilo de Director con las variables locales y globales.
Para destruir de la memoria las variables globales, por ejemplo al cerrar el programa, para liberar la
memoria del ordenador, utilizamos la sentencia clearGlobals.

Bucles en Lingo: "repeat with" y "repeat while"


Los bucles se usan en programacin para conseguir que un programa repita una serie de pasos o acciones
hasta alcanzar un objetivo. Basicamente un bucle es una tarea organizada, un fragmento de cdigo que se
encarga de gestionar una tarea repetitiva.
Cuando necesitamos por ejemplo declarar como "puppet" todos los sprites del score desde el 1 hasta el 45,
un mal programador escribira.
set the puppet of sprite 1 to true
set the puppet of sprite 2 to true
set the puppet of sprite 3 to true
...........
..............
Y asi hasta que se le durmieran los dedos. Para evitar esto y otras muchas cosas, debemos usar bucles.
Asi por ejemplo para el caso anterior, el problema estaria resuelto con un bucle sencillo.
repeat with x = 1 to 45
set the puppet of sprite x to true
end repeat
-------------------------------------------------------En Lingo hay dos tipos de bucles: "repeat with" y "repeat while".
-------------------------------------------------------El bucle "repeat while".
Este es un bucle que ejecuta su cdigo en funcin una expresin de control. Esta expresin puede ser
cualquier variable que se pueda evaluar como verdadera (TRUE) o falsa (FALSE).
Por ejemplo:
repeat while the mouseH > 40
-- realizar algunas acciones-end repeat -- final del bucle

repeat while not terminado


-- acciones a repetir --end repeat
repeat while the stillDown
-- acciones a repetir mientras el ratn est pulsado --end repeat
Este otro bucle consigue detener la pelicula durante dos segundos.
startTimer
repeat while the timer < 5 * 60
put "Esperando..."
end repeat
Hay que tener cuidado, sin embargo, con los bucles repeat while, ya que mientras estn funcionando,
absorvern toda la atencin del programa por lo que, las pulsaciones del ratn y las animacines se
detendrn. Al menos solo debemos hacer funcionar estos bucles siempre y cuando sea facil "romperlos".
-------------------------------------------------------El bucle "repeat with".
Este es un "bucle contador".
Realiza una serie de acciones hasta alcanzar un nmero predefinido por el programador.
Por ejemplo:
repeat with x = 1 to the number of words in field "textos"
if word x of field "textos" = "lingo" then
Alert "Has escrito Lingo"
end repeat
Este bucle repite a accin de bsqueda desde 1 hasta el numero de palabras que hay en el campo
"textos".
Este otro bucle simplemente realiza una cuenta de 1 a 260, contando de uno e uno, y la imprime en un
campo de texto.
repeat with cuenta = 1 to 260
set cuenta = cuenta + 1
put cuenta into field "msg"
end repeat
Este otro, realiza la misma cuenta de 1 a 260, pero contado de dos en dos, ya que el valor de la variable
"cuenta" es aumentada en 2 en cada iteracin del bucle.
repeat with cuenta = 1 to 260

set cuenta = cuenta + 2


put cuenta into field "msg"
end repeat
Es facil imaginarse cientos de utilidades para los bucles, desde una simple cuenta, hasta la programacin
de la trayectoria de una pelota de futbol o un proyectil en un juego. Siempre que queramos realizar
acciones repetitivas en un programa debemos recurrir a los bucles, ya que estos forman parte de cualquier
estructura de cdigo en cualquier lenguaje de programacin.

Movie in a Window
Otra carateristica interesante de Director es el trabajo con ventanas independientes y las posibilidades de
compartir datos entre ellas. Basicamente trabajar con MIAW (Movie in a Window), es crear una ventana y
asignarle a esta ventana una pelicula de Director. De este modo se puede tener una pelicula principal y
abrir en cualquier momento nuevas ventanas que actuen como selectores o barras de herramientes, etc.
Para esto necesitamos una pelicula principal y una serie de pelicuals que conformarn cada una su ventana
independiente en su momento. Estas peliculas secundarias pueden estar importadas en la misma ventana
cast, y por lo tanto acopladas al proyector luego, o haber sido incluidas en el proceso de crear el proyector,
asi como simplemente pueden ser archivos externos en formato: DIR, DCR, DXR, etc.. colocados en el
mismo directorio del proyector.
Para abrir una ventana el script bsico de Lingo es:
open window "miPeli.dir"

Con este comando bsico se nos abrir una nueva ventana flotante del tamao de la pelicula que contiene y
que funciona por si misma. Para cerrar esta ventana desde Lingo el script ser:
forget window "miPeli.dir"

Con esto tenemos el trabajo ms bsico que podemos realizar con ventanas en Director, pero por supuesto
hay muchisimo ms.
Podemos asignar un nombre de archivo diferente a la ventana en cualquier momento con el script:
set the filename of window "miPeli" to "miPeli2.dir"

Podemos situar exactamente la ventana en la pantalla con el metodo rect(arribaX, arribaY, abajoX, abajoY):
set the rect of window "miPeli" to rect(10,10,150,100)

Asimismo podemos cambiar el tipo de ventana (su estilo) utilizando el mtodo windowType:
Por ejemplo:
set the windowType of window "miPeli" to 0 -- Ventana normal.
set the windowType of window "miPeli" to 1 -- Ventana de alerta.

set the windowType of window "miPeli" to 2 -- Rectngulo simple.


set the windowType of window "miPeli" to 3 -- Rectngulo con sombra.
set the windowType of window "miPeli" to 4 -- Ventana sin botones maximizar o minimizar.
set the windowType of window "miPeli" to 8 -- Ventana normal con scroll.
set the windowType of window "miPeli" to 12 -- Ventana normal con scroll sin botones maximizar o minimizar.
set the windowType of window "miPeli" to 16 -- Ventana con redondeada.
set the windowType of window "miPeli" to 49 -- Ventana de tipo paleta flotante.

Y tambin por supuesto podemos cambiar su ttulo en cualquier momento:


set the title of window "miPeli" to "Hola soy una MIAW"

Intercambiar datos entre ventanas:

Este es sin duda el elemento ms interesante de la programacin con ventanas mltiples en Director.
Para dirigir nuestros script de Lingo a una ventana en concreto utilizamos en comando tell:
tell window "miPeli"
set the puppet of sprite 3 to true
set the locH of sprite 3 to x
if (field "mio" = EMPTY) then
alert "El campo est vaco"
end if
end tell

Todo el script encerando entre "tell" y "end tell" se refiere a una ventana en concreto y por consiguiente
actua sobre su pelicula exclusivamente. De igual modo podemos enviar variables globales a la pelicula en
ventana desde la pelicula principal:
global miVar
set miVar = field "info"
tell window "miPeli"
put miVar into field "info2"
end tell
end

Tambien, como no, podemos volver a "hablar" con la pelicula principal (el escenario), usando el script tell
the stage to...
tell the stage to set the puppet of sprite 2 to false

Y esto, mas o menos es todo en cuanto a ventanas. En el proximo capitulo veremos como utilizar mens
en nuestras aplicaciones de Director

getPref y setPref
(Cookies en Director y Shockwave)

(descargar la pelicula de ejemplo)


Shockwave es una de las mas potentes formas de publicar multimedia en internet, por encima del plug-in
de Flash, que si bien es optimo para animaciones vectoriales interactivas, Shockwave va mucho mas alla,
utilizando el Shockwave Multiuser Server para aplicaciones multiusuario, manejo de bases de datos, chats
IRC, etc... Sin embargo ahora veremos una utilizacin muy sencilla de Shockwave y proyectores de
Director para escribir cookies en el navegador cliente y preferencias de una aplicacin de Director.
Una Cookie (galleta), como muchos sabreis es la forma en que muchas aplicaciones en red, escriben datos
en el navegador del ciente para recordar cosas tales como la ultima vez que visitamos la pagina, etc... esto
es muy util para muchas cosas, en el caso de Shockwave nos permite por ejemplo recordar el nombre y las
preferencias del jugador, para que pueda ir avanzando niveles en nuestro juego en red de forma
personalizada. Y por supuesto para otras muchas cosas que podreis imaginar por vosotros mismos.
En una aplicacion de Director (un proyector), las sentencias setPref ( ) y getPref ( ) escriben y leen
respectivamente de una carpeta en el mismo directorio de la aplicacion los datos escritos desde el
programa. Cuando utilizemos setPref ( ) se creara la carpeta y se escribira un documento de texto con un
nombre en concreto con los datos que enviemos, datos que luego se puede recuperar con getPref ( ).
En una aplicacion en red con Shockwave, setPref ( ) creara una carpeta en el directorio del navegador del
cliente, llamada "Prefs" y alli escribira las preferencias, de forma que se conservaran mientras el usuario
no las borre. getPref( ), recuperara esas preferencias en cualquier momento en que ese mismo usuario
vuelva a utilizar nuestra aplicacin Shockwave.
Veamos dos ejemplos:
on mouseUp me
global texto
set texto = field "TF"
setPref "datos", texto
end
Este sencillo script asignado a un boton, rcoger el texto escrito en un campo de texto llamado "TF"
y los escribira en el archivo externo de preferencias llamado: "datos"
Este otro script recupera esos mismo datos y los escribe en el campo de texto llamado "TF".

on mouseUp me
global texto
set texto = getPref("datos")
put texto into field "TF"
end
Sencillo no?.
Los que sepais como escribir cookies desde Flash o Javascript, apreciareis sin duda la manera tan sencilla
y limpia de hacer lo mismo desde Director.
En el siguiente capitulo continuaremos descubriendo las maravillas de Director, incluyendo secretos sobre
como hacer juegos en 3D.

getNetText ( )
Uno de los modos de publicacin mas usados en Director hoy dia, es la publicacin en formato
Shockwave, y la inclusin de peliculas interactivas, como juegos, etc... en paginas web
accesibles a traves de internet.
En este contexto, que cada vez cobra mas fuerza, aparecen nuevas necesidades de
comunicacin para nuestras peliculas. Como hacer juegos multijugador en red? Como enviar
o recibir variables de un CGI?.
Mas adelante aprenderemos un poco sobre como hacer juegos con chats IRC, etc, utilizando el
Shockwave Multiuser Server de Director. En el capitulo anterior vimos como escribir algo
parecido a "cookies" con Shockwave. Ahora vamos a centrarnos en aprender como trabajar con
CGI y ASP del lado del servidor, para enviarle datos o recibir sus respuestas.
getNetText para enviar variables al CGI:
Veamos este script:
set url = "http://miservidor.com/puntos.asp?juego="3enraya"&puntos;=" & puntos & "&user;=" &
jugador
getNetText( url )
En este scrip, en primer lugar creamos una variable que contenga una cadena en el formato
correcto para ser enviada a una pagina ASP.
Lo hacemos con "set url = ...". El resultado real de la cadena de arriba seria finalmente:
"http://miservidor.com/puntos.asp?juego="3enraya"&puntos=3&user;=pepe "
Una vez tenemos ya la cadena a enviar al CGI, nuestro siguiente script se encargar
simplemente de enviarla con el comando de Lingo: "getNetText".
Lo hacemos con:
getNetText( url )
Siendo "url" la variable de texto que habiamos construido antes.
Bueno, hasta aqui todo bien no?, hemos creado una cadena para enviar con texto y variables y
la hemos enviado a la pagina ASp o al CGI del servidor.
En este script no esperamos ninguna respuesta del servidor, simplemente enviamos los datos y

seguimos a lo nuestro.
Pero, y si queremos cargar los datos que nos pueda devolver un CGI, como un registro de
una base de datos, unas variables de sesin, etc ?
getNetText para recibir variables del CGI:
set netID = getNetText ("http://miservidor.com/database.asp")
Este script, llama a una pagina ASP, y esta responde como si hubiera recibido cualquier otro
"Request.Form", de un formulario de una pagina.
Se supone que esta pagina ASP ya existe y responde adecuadamente con un valor, cuando se
la llama.
Pero Como atrapamos nosotros su respuesta?.
Si os fijais vereis que he asignado un identificador a la operacin getNetText, con "set netID =".
Asi, Director recuerda que la operacin de red en curso se llama "netID". (Tambien puede
llamarse de otra forma, como vosotros querais, yo he sido hortodoxo). Esto vamos a utilizarlo
para recuperar la informacion cuando esta venga de vuelta. Para esto en el siguiente cuadro de
pelicula preparamos un script de forma que la pelicula no avanze mientras los datos del ASP no
lleguen de vuelta.
Para esto utilizamos el comando de Lingo netDone(netID), para comprobar que netID haya
finalizado. Si esta operacin ha finalizado (cuando netDone sea igual a TRUE ), ponemos el
resultado de la operacin contenida en el campo de texto llamado "datos".
El resultado de la operacin de red, lo recuperamos siempre con el script: netTextResult(netID).
Ahi teneis el script completo:
on exitFrame
go to the frame
global netID
if netDone(netID) then
member("datos").text = netTextResult(netID)
go next
end if
Como veis, primero se comprueba netDone( ) , y si esta es TRUE, o sea si ha terminado la
operacin, se recoge el resultado con netTextResult( ), y se pone en el campo de texto llamado
"datos" para que podamos verlo.
Recordad que no debeis poner en el mismo cuadro la peticin y la espera de respuesta, ya que
de haber un bucle en ese cuadro, la peticin se repetiria una y otra vez sin dar tiempo a llegar la
respuesta y de seguir la pelicula avanzando no dara tiempo a recibir la respuesta.
Para estos propositos es costumbre realizar la llamada en un cuadro, y en el siguiente cuadro

esperar a que la variable global netID se complete, para recuperar los datos y continuar si se
quiere.

Uso de Listas en Lingo.


Las listas en Director son un recurso muy potente e imprescindible de utilizar en casi cualquier
proyecto. Basicamente una Lista de Lingo es una forma de almacenar informacion
ordenadamente, de forma que luego la podemos mantener en memoria para consultarla o
manipularla de muchas formas.
Supongamos el caso de un tablero de damas o ajedrez en donde las fichas estan colocadas en
una casilla inicial. Durante el juego esas fichas al ser movidas o comidas pasaran a tener otra
posicion distinta a la inicial. Como llevar la cuenta de las fichas de dos o mas jugadores en un
caso como este?
Para esto y muchas cosas mas tenemos las Listas. Con ellas no solo podemos tener las
posiciones de las fichas, al dia sino que ademas podemos consultarlas para averiguar si una
ficha que va a ser movida hara un movimiento valido, sin subirse encima de otra ficha del mismo
color, porque en todo momento conocemos la situacion del tablero gracias a nuestras listas del
juego.

Las Listas:
En Lingo existen dos tipos de Lista: la Lista Simple y la Lista de Propiedades.
Veamos la primera, la Lista Simple:
Para definir e inicializar una lista vacia simple en memoria sobre la que trabajar utilizamos:
global milista
limista = [ ]
Aqui tenemos una lista vacia, esperando a ser llenada con informacion.
Para aadir un valor a la lista podemos utilizar la funcion: add(milista, valor), por ejemplo.
global milista
add(milista, #peonnegro) -- ahora la lista tendra el valor: [#peonnegro]

Si aadimos un nuevo valor a la lista, pasara a ocupar el lugar siguiente, por ejemplo:
global milista
add(milista, #alfilnegro) -- ahora la lista tendra los valores: [#peonnegro, #alfilnegro]
Para recuperar los datos existentes en una lista utilizamos la funcion: getAt(lista, posicion)
global milista
getAt(milista, 2) -- devolveria el segundo valor de la lista: #alfilnegro
Podemos saber tambien el numero de elementos que tiene una lista con count(milista) ,
Asi podriamos utilizar un bucle para extraer todos los elementos de una lista, por ejemplo:
repeat with x = 1 to count(milista)
dato = getAt(milista, x)
put dato
end repeat
-- Este bucle iria recogiendo todos los elementos de la lista desdel uno hasta el
ultimo.
-- Ese dato recogido de cada iteracion del bucle se lo hemos ido asignando a la
variable dato.
Tambien podemos recuperar un dato en una posicion de la lista con gePos(lista, posicion)
pero debemos estar seguros de que ese dato existe para no provocar un error en el programa.
Esto nos devolvera un numero que corresponde con la posicion del elemento en la lista, por
ejemplo:
num = getPos(milista, #peonnegro) -- num pasaria tener el valor 1, que corresponde a la
posicion de este elemento en la lista.
Si queremos borrar un valor de la lista simple utilizamos la funcion: deleteAt(lista, posicion)
Finalmente si quisieramos vaciar por completo una lista simplemente tendriamos que sealarla
como vacia del mismo modo que la inicializamos antes:
global milista
limista = [ ]
En definitiva las listas simples nos permiten almacenar objetos de forma ordenada, pero en
Lingo tenemos otro tipo de listas mas sofisticado:

Las Listas de Propiedades:


Este tipo de listas se diferencian de las primeras en que almacenan la informacion segun una
clave y un valor. Este valor pasa a ser asociado a su clave, pudiendo ser recuperado
simplemente a traves de su clave, igual que si se tratara de una variable con sus partes, nombre
y valor.
Para inicializar una lista de propiedades vacia utilizamos el simbolo " : " en el interior de la lista
para indicar a Lingo de que se trata de una lista de propiedades y no de una lista simple.
global milista
limista = [ : ]
Para aadir un valor a esta lista con su clave utilizamos: addProp(lista, clave, valor), por
ejemplo:
addProp(milista, #peones, 4)
addProp(milista, #alfilnegro, "H1V1")
addProp(milista, #reyblanco, point(280, 233))
Ahora nuestra lista tendria este formato: [#peones: 5, #alfilnegro: "H1V1", #reyblanco:
point(280, 233)]
Normalmente utilizamos las listas para almacenar el mismo tipo de datos, podemos tener una
lista para las posiciones, otra para las fichas comidas, otra para las casillas vacias, etc... este
ejemplo anterior era solo ilustrativo.
Fijaros que el formato de las Listas de Propiedades es siempre: [clave : valor , clave : valor].
Para recuperar el valor de una propiedad de una lista utilizamos: getAProp(lista, propiedad),
por ejemplo el script:
getAprop(milista, #reyblanco), devolveria el valor point(280, 233), que es el valor de la
propiedad #reyblanco, de la lista milista.
Si queremos cambiar el valor de una propiedad ya determinada de la lista utilizamos:
setAProp(lista, clave, valor)
Por ejemplo el script:
setAprop(milista, #peones, 18) asignaria a la clave #peones el valor 18, con lo que la lista

tendria ahora este formato:


[#peones: 18, #alfilnegro: "H1V1", #reyblanco: point(280, 233)]
Si ahora consultaramos el valor de esta clave en la lista con getAprop(milista, #peones)
obtendriamos el numero 17.
Hasta aqui hemos visto como trabajar con Listas en Lingo y como recuperar y manejar los
valores almacenados en ellas.
Las Listas y su uso es algo practicamente imprescindible y aunque si estais aprendiendo aun a
programar os resulte quiza un recurso poco util o incomodo, segun vayais entrando en la
programacion y vayais usandolas vereis como es dificil entender como habiais hecho las cosas
hasta ahora sin ellas.
Con las Listas siempre teneis ahi, en la memoria del ordenador, una completa base de datos
con lo que necesitara vuestro programa para funcionar.
Se os puede ocurrir tambien combinar esto para guardar los datos de las listas en el disco, con
las funciones setPref y getPref para poder recuperarlos en cualquier otro momento.
Habeis pensado como Director y otros programas conservan la posicion de las ventanas, los
directorios de disco, etc, cada vez que los abris?
Estos programas usan algo muy parecido a las Listas de Lingo para mantenerse personalizados
por los usuarios.

Trigonometria para Juegos ( parte 1)


En esta pelicula de ejemplo, veremos como hacer girar objetos de distintas formas, utilizando las funciones cos
y sin en Director o Math.cos y Math.sin en Flash 5.
Esto es muy util para mover objetos en juegos, y hacer simulaciones de todo tipo. Tambien veremos como hacer
que un objeto se desplace hacia la posicion del raton.
El codigo es muy sencillo de convertir a Flash y es recomendable examinarlo a fondo en la pelicula que
descargueis, para imprimirlo o pegarlo en vuestros proyectos..
Decargar la pelicula de ejemplo en formato Director 7

S-ar putea să vă placă și