Вы находитесь на странице: 1из 55

El lector de Flash, normalmente, permite ver slo una proyeccin .

SWF, pero utilizando elaction Load Movie es posible ver ms proyecciones externas.

En este ejemplo se invoca el file loadmovie1.swf y se le asigna el nivel 1. La pelcula principal tiene valore de nivel igual a 0. Todas las pelculas cargadas cogen color de fondo, frecuencia de fotogramas y dimensiones de este nivel. Cuando se carga una pelcula externa, hay que asociar un nmero de nivel superior a 0, para evitar la sustitucin con la pelcula de base a nivel 0. La voz Unload movie from location permite descargar el movie ya sea de la pelcula que de la memoria cache del browser. Si se selecciona, tendremos que incluir el nmero de nivel en el que est presente el movie que hay que descargar. La propiedad Variables se usa conjuntamente con la vozLoad variables into location. El uso de estas propiedades permite enviar variables a un CGI externo con modalidad GET o POST, segn se necesite.

Para quien se est iniciando en la programacin en general, es necesario aprender algunas nociones bsicas. Un ejemplo son lasvariables. Se puede definir una variable como un contenedor dentro del cual encontramos un valor:

Los valores pueden sernumricos (4, 55, 82, 204, 5930 ecc..), cadenas ("html", "hola", "pluto", "ser o no ser" etc.) o bien el resultado deexpresiones (4+3, 345-15, en estos casos la variable asume el resultado de laexpresin). Los valorescadena son identificados por los limitadores " " mientras los valores numricos y cadena no necesitan limitadores. Adems de las variables, existen las constantes. Se diferencian, como su propio nombre indica, por el hecho de que las variables pueden tomar valores diferentes segn sean las situaciones que afrontan las constantes sin embargo, poseen siempre el mismo valor. En Flash, sin embargo, no existe esta distincin; por tanto, tambin las constantes se consideran variables (digamos... variables no modificables...). Usando el lenguaje de programacin Flash, se a menudo ser necesario insertar variables, por ejemplo cuando se quiera crear un mdulo para la recogida de datos. Todos los campos presentes en el mdulo son variables. En las lecciones que vendrn a continuacin, explicar el uso de las variables y cmo programar el valor. A tavs de la accin Set Variable es posible darle un valor a una variable. Pongamos un ejemplo: hemos incluido en nuestro movie Flash un form para la recogida de datos y se quiere insertar la tecla Reimposta que, cuando se pulse, borre los valores de todos los campos presentes en el form. Para hacerlo, necesitamos la instruccin Set Variable, incluida en el evento Release del botn y programada con los nombres de los campos al valor null. Adelanto que, incluyendo un campo de texto, y asignndole como nombre el mismo nombre de una variable, el campo se convierte en la variable misma y es posible invocarla en nuestras action.

Al pulsad reprograma se ha asignado esta ActionScript:

On (Release) Set Variable: "nombre" = "" Set Variable: "email" = "" End On

Dnde nombre e email son los nombres que se han asignado a los dos casilleros de texto. Por eso, cuando el usuario pulsa reprograma se les asigna a los dos casilleros de texto el valor nulo, y en consecuencia se cancelan los valores presentes en su interior. Cuidado! Cuando se settan variables con determinados vaores, es importante especificar qu tipo de valores se est incluyendo. Flash permite incluir valores string literal o expression. Los valores string literal son valores fijos, no cambian segn sean los eventos, mientras que los valores expression son valores dinmicos, que normalmente son el resultado de expresiones entre variables. En el ejemplo anterior se ha incluido un valor string literal, en cuanto que el valor que se asigna a los casilleros de texto es siempre el mismo ( null). Sigue un ejemplo de Set Variabile a travs de un valor expression (para cualquier aclaracin, hay que consultar la leccin Valores numricos y cadena).

En este ejemplo estn presentes tres casilleros de texto: num1, num2 e total. En el evento Release del botn calcula se ha incluido esta ActionScript:

On (Release) Set Variable: "totale" = num1+num2 End On


A la variable/casillero de texto total se asigna el valor de las expresiones num1+num2 y por tanto el resultado de la suma entre el primer valor incluido y el segundo. Fijaos en la ausencia de las comillas "" que identifica un valor expression. Breve precisin Para para referirse a variables presentes en clip o pelculas externas, la sintaxis es la siguiente: nometarget : nomevariabile dnde nometarget es el nombre del target (consltese la siguiente leccin Especificacin de los Target) en el cual reside la variable especificada con nombrevariable. Presentemos algunos ejemplos... Si queremos convocar la variable pippo presente en una pelcula externa cargada a nivel 1, la sintaxis es sta: _level1:pippo Si, por el contrario, quisiramos convocar la variable pippo presente en el interior de la clip pluto, sta es la sintaxis: /pluto:pippo Contador

Ocurrir a menudo que habra que utilizar un contador en nuestras action. Un contador es una variable que se incrementa con tot cada vez que la accin la convoca. Qu habra que hacer si quisiramos aadir 1 a la variable x con valor 23? Con esta action:

Set Variable: "x" = x + 1


asignamos a la variable x el valor de x (es decir el valor que est dentro) ms uno: "x" = x + 1 "x" = 23 + 1 quindi "x" = 24 La prxima vez que sea invocado, ser incrementado con 1 y llegar a la cuota 25. Y as todas las veces que sea invocada... Descarga la fuente del primer ejemplo Descarga la fuente del segundo ejemplo Antes de proseguir el curso con las dems lecciones, ser bueno entender qu son los target y qu hay que hacer para invocarlos. Target, traducido literalmente, significa objetivo. Es decir un objeto al que se ha asignado una funcin determinada. Pero, cules son nuestros objetivos en Flash? Aprender a usarlo? Si, as es, pero entenda algo ms inherente a la programacin Flash. ;-) Se pueden especificar como target slo los movieclip o las pelculas externas cargadas a travs de Load Movie. El target es necesario en algunas action que estudiaremos ms adelante. Por ejemplo, redimensionar la longitud de un movieclip, o controlar el cabezal de lectura frame de una pelcula externa o, sin ms, arrastrar con el ratn un movieclip. Es durante la escritura de las action cuando tendremos que especificar el nombre del target que hay que controlar. Pero que nombre hay que usar? Muy sencillo, el nombre que le daremos a la solicitud del movieclip despus de haberlo incluido en el rea de trabajo (para las pelculas externas, ya explicar ms adelante el procedimiento). Veamos cmo actuar:

1) seleccionar el movieclip deseado y arrastrarlo al rea de trabajo sin dejar de presionar el pulsante del ratn hasta que se encuentre la posicin precisa para la clip:

2) liberar el pulsante del ratn y el movieclip aparece en el rea de trabajo:

3) sealad con el pulsante derecho del ratn en el movieclip apenas incluido y digitad un nombre para la instancia:

El nombre que se especifica para la instancia, conviene elegirlo lo ms corto posible e inherente (es obvio) con elmovieclip. En este caso, he llamado la instancia de logo HTML, simplemente logo. Ser este nombre el que nos permitir controlar el movieclip en nuestras action. Por tanto, el nombre de la instancia, es esencial. Bien, si habis llegado hasta aqu tranquilamente..., preparaos para lo peor. Cuando incluyis un movieclip en la pelcula, es necesario prestar mucha atencin a dnde se coloca. Porque Flash tiene una estructura de los objetos similar a la de los directorios de un sistema operativo.

Me explico... Como acabamos de hacer, la instancia logo del movieclip logo HTMLpoint se ha incluido en el Scene principal de nuestro movie. Si hubisemos incluido el movieclip en otro movieclip de nombre pippo entonces la instancia logo se encontrara en la clip pippo y no en la pelcula principal.

En este caso la instancia logo est en la pelcula principal del movie. Para entender mejor la cuestin, he aqu un esquema que muestra la estructura de las clip:

Pelcula.swf (nivel 0) Clip logo Clip html Pelcula1.swf (nivel 1) Clip pippo
En este caso, en la pelcula principal se encuentra la clip logo que a su vez contiene la clip html. Mientras en la pelcula secundaria "Pelcula1" se encuentra la clip pippo. Estoy explicando todo esto por el hecho de que, cuando se especifica un target, hay que incluir, adems del nombre, tambin el recorrido de la clip. Invocando la clip logo, tendremos que incluir como target: /logo (la barra / significa que la clip est situada en la pelcula principal del movie). Para invocar la clip html tendremos que escribir: /logo/html porque est situada dentro de la clip logo que est en la pelcula principal. Y por fin, para invocar la clip pippo habr que escribir: _level1/pippo. Cuando se invocan clip de pelculas externas, hay que incluir la voz _leveln donde en lugar de n se incluye el nmero de nivel de la pelcula que contiene la clip (hay que prestar atencin a incluir tambin el carcter underscore _ ). Podremos, por tanto, escribir _level0/logo para invocar la clip logo, pero nos arriesgamos a que la lectura de nuestras action sea difcil. Os aconsejo que aprendis bien esta leccin, que es muy importante para afrontar con mayor facilidad todo lo que falta a propsito de la programacin Flash. La instruccin Tell Target nos permite controlar algunas situaciones para las clip o pelculas indicadas como target. Veamos un sencillo ejemplo de Tell Target:

Los dos botones dirigen la lectura del frame (adelante y atrs) del movieclip logo. Lo primero, arrastarar el movieclip deseado a la zona de trabajo y asignarle un nombre a su instancia (en este caso, la instancia se llama logo). Incluir tambin los dos botones y asignarle el action Tell Target de esta manera:

Hay que sealar que Flash ofrece un men de todas las instancias incluidas en el movie principal, pero no es necesario seleccionar a la fuerza una voz del men, se puede tambin escribir directamente en la propiedad Target el nombre de la instancia. Se selecciona, por tanto, la clip logo como target de Tell Target. Desde este momento todas las action que incluimos en Tell Target sern asignadas a la clip logo. Incluimos pues Go to Previous Frame para el boton atrs y Go to Next Frame para el botn adelante. stas son las 2 ActionScript: Botn atrs:

On (Release) Begin Tell Target ("/logo") Go to Previous Frame End Tell Target End On
Botn adelante:

On (Release) Begin Tell Target ("/logo") Go to Next Frame

End Tell Target End On


De esta manera, pulsando el botn adelante, el movieclip logo es invocado y el "cabezal" de lectura frame es trasladada al frame sucesivo al que se encuentra. Anlogamente, si se pulsa el botn atrs el cabezal de lectura frame se traslada al frame anterior. N.B. Para efectuar esta animacin, se han insertado dos action Stop en el primero y en el ltimo frame del movieclip logo (si no, la animacin se repetira hasta el infinito). Profundizacin Es posible especificar como target tambin la pelcula principal, insertando la barra / sin especificar nada ms:

On (Release) Begin Tell Target ("/") Stop End Tell Target End On
En esta action la pelcula principal se para en el Release del ratn. Descarga el ejemplo de esta leccion En una pelcula Flash interactivamente rica, puede resultar til la opcin de arrastre de clip, quiz un pequeo men que pueda trasladarse de un punto a otro del movie, o incluso el mismo efecto MouseTrace, el efecto, visto ya en muchos sitios, en el que el usuario es entretenido por una animacin condicionada por el movimiento del cursos. El arrastre es posible a travs del action Drag Movieclip.

stas son las propiedades para el action:

Por defecto, es seleccionado Start drag operation que indica la activacin del arrastre de la clip indicada en la propiedad Target. Es posible seleccionar una clip a travs del uso del Target Editor (clicar sobre el instrumento abc):

La opcin Lock mouse to center permite situar la clip con su centro exactamente en el ngulo superior izquierdo del cursor del ratn. En los dos ejemplos de esta pgina, se activa esta opcin. La opcin Constraint to rectangle, sin embargo, limita el arrastre al interior de un rectngulo con las dimensiones indicadas en los parmetros left, top, right y bottom:

Seleccionando la voz Stop Drag Operation se termina la operacin de arrastre. Descarga el primer ejemplo de esta leccin Descarga el segundo ejemplo de esta leccin

Esta leccin es muy importante para entender del mejor modo las siguientes. Os aconsejo, por lo tanto, leer con mucha atencin, aunque bastantes cosas os parecern obvias. Est claro que cuando se habla de valores numricos se entiende un nmero, mientras que por valores cadena se entiende una palabra; no es as? Pues en absoluto. Puedo hablar de valores cadena tambin cuando se trata de nmeros; he aqu algunos ejemplos: 23, 1730, "sitio", "sitio2", "222" Los valores numricos estn coloreados de rojo, mientras los cadena lo estn de azul. Los valores cadena tienen la particularidad de estar encerrados por limitadores " ". Por eso, si quisiramos darle a una variable de nombre x el valor numrico 23 no seria exacto escribir as:

Set Variable: "x" = "23"


(dejando activa la voz Cadena Literal en el parmetro Value) porque de este modo, la variable x asumira un valor cadena ("23") y no un valor numrico (23). He dicho que "no sera exacto" por el hecho de que si para hacer, quisisemos aadir 1 a la variable x (x + 1) despus de haberle asignado ese valor cadena, automticamente Flash reconocera el valor insertado como numrico y ejecutara la operacin. Si intentsemos sumarle a un valor cadena (para hacer. "html") uno numrico, Flash lo transformara literalmente en 0 y aadira el segundo valor de la suma: "html" + 5 = 5 o bien 0+5=5 Para escribir correctamente la action, dadle un valor expresin (que identifica tambien un valor numrico) a la variable:

Set Variable: "x" = 23


Con valores numricos podemos ejecutar operaciones como suma, resta, divisin y multiplicacin, algo imposible si usamos valores cadena donde la nica operacin permitida es la concatenacin. He aqu una tabla que resume todos los posibles operadores para los dos tipos de valores:

OPERADORES Valores numricos + / & SIGNIFICADO Valores cadena Suma Resta Divisin Multiplicacin

* = <> < > <= >= eq (equals) ni (not equals) lt (less than) gt (greather than) las (less than or equal to) ge (greather than or equal to) Igual Distinto Menor que Mayor que Menor o igual que Mayor o igual que

Como se puede ver, al + numrico corresponde el & cadena, al = numrico corresponde eq cadena, etc. Planteando el caso de que se tuviesen dos variables x y k con valores, respectivamente, de 23 y "HTML" (es decir numrico y cadena), las dos action:

Set Variable: "x" = x + 1 Set Variable: "k" = k & ".it"


daran como resultado x = 24 y k = "HTMLpoint". La concatenacin entre dos valores cadena da como resultado la unin de los dos (en este caso, k tena ya valor "HTML" en su interior, el mismo resultado lo da el action k = "HTML" & ".it"). Los operadores comparativos se utilizarn en las siguientes lecciones. Por ahora, limitaos a entender que: cuando se crean condiciones de igualdad, mayora o minora hay que utilizar los operadores adecuados, segn los tipos de valores que se estn comparando. Por eso, emplear el operador eq para valores numericos es un error, del mismo modo que usar = para valores cadena. Cuidado, por tanto, cuando se haga referencia a variables; habr que escribir algo as:

Set Variable: "x" = "x + 1"


(por tanto cadena literal) quiere decir asignarle a x el valor "x + 1" entendido como cadena, por el contrario, nosotros queremos que se considere como expresin, y por tanto como resultado de x +1. Por ello, habr que clicar en expression para eliminar los limitadores quot; ":

Set Variable: "x" = x + 1

Adems de los operadores para estos dos tipos de valores, existen tambin unas funciones que implemetan el uso. Funciones numricas

Para los valores numricos existen exclusivamente dos funciones: Int y Random. Int Transforma en enteros valores numricos decimales. La sintaxis es la siguiente: Int ( number ) Donde number es el nmero o la variable que hay que transformar en un entero. Random Genera un valor numrico entero casual en el intervalo de valores entre 0 y el nmero incluido como valor number. La sintaxis es la siguiente: Random ( number )

En este caso number tiene valor 1000, y sta es la action del botn:

On (Release) Set Variable: "x" = Random (1000) End On


donde, obviamente, x es el nombre de la casilla de texto.

Funciones cadena Para los valores cadena existen estas funciones: Substring, Length, Chr e Ord. Substring Permite extrapolar parte de una cadena. La sintaxis es: Substring ( string, index, count ) Donde string es la cadena o la variable de la que tomar el "trozo", index es el nmero del carcter del que partir para la extrapolacin y count es el nmero de caracteres que tiene que tomar para la extrapolacin. Por tanto, una action de este tipo: Substring ("HTML.it", 3, 4) da como resultado "ML.i" o sea 4 caracteres a partir del tercero.

Length Restituye el nmero de caracteres que componen una cadena o una variable. La sintaxis es: Length ( string ). Length ("HTMLpoint") restituye valor 7.

Chr Convierte un cdigo ASCII en carcter. La sintaxis es: Chr ( asciiCode ) Ord Convierte en carcter un cdigo ASCII. La sintaxis es: Ord ( character ) Descarga el primer ejemplo de esta leccin Descarga el segundo ejemplo de esta leccin Descarga el tercer ejemplo de esta leccin

Get property
La action GetProperty restituye el valor de la propiedad del target especificado. He aqu cmo se presenta la sintaxis de la instruccin GetProperty: GetProperty ( target, property ) donde target es el nombre de la instancia de la que tomar el valor de la propiedad (property) deseada. Para cada clip hay muchas propiedades que describir en las lecciones siguientes. Todas las propiedades tienen la particularidad de estar precedidas por el carcter underscore _ antes del nominativo. En esta leccin me limitar a explicar el uso de las propiedades _x y _y. "_x" y "_y" A travs de _x e _y es posible saber la posicin x e y en puntos de la clip especificada como target:

En esta pelcula, la clip logo se convierte en arrastrable a travs de la action Drag Movieclip y las variables x e y tienen como valor la action GetProperty:

Set Variable: "x" = GetProperty ( "/logo", _x ) Set Variable: "y" = GetProperty ( "/logo", _y )
De esta manera, la variable x toma el valor de la propiedad _x (posicin horizontal de la clip) de logo. Para crear esta action, al incluir la instruccin Set Variable, hay que asignar x como target y en el campo value abir el expression editor:

En ese momento, se tiene que seleccionar del men Functions la voz GetProperty:

borrar las cadenas target y property, y sustituirlas por "/logo" y _x. Tened cuidado de incluir el nombre del target con los limitadores " " si no, os arriesgis a que no se vea absolutamente nada.

Hay que repetir la misma operacin para la variable y especificando como propiedad _y. Descarga el ejemplo de esta leccion

Otras propiedades de Get property


Otras propiedades La sintaxis para saber el valor de las otras propiedades es la misma, por tanto me limitar a resumir el significado para cada una de ellas. "_xscale" e "_yscale" Porcentaje escalar de la clip. En pocas palabras, indica el "zoom" de la clip. "_rotation" Grado de rotacin de la clip. "_width" e "_height" Anchura y alura, en pixel, de la clip. "_name" Nombre de el clip. "_url" Recorrido del file .swf que contiene la clip. "_target" Nombre del target. "_visible" Indica si la clip es visibile o no. El valor 1 indica que la clip es visibile, mientras que el valor 0 indica que es invisible. "_alpha" Porcentaje de transparencia de la clip. "_totalframes, _framesloaded, _currentframe" Respectivamente: encuadres totales, encuadre cargado y encuadre corriente. En este caso se refieren a los encuadres que componen el movieclip logo (en cuanto que ha sido asignado como target) y no a la pelcula principal.

Descarga el ejemplo de esta leccin

Con el action Set Property se puede programar una propiedad de la clip sealada como target. Haced la prueba de incluir 2 valores numricos para x e y en los campos de la pelcula subyacente y clicad en "programa":

Como se habr visto, la clip logo se coloca en el punto x,y sealado en los valores incluidos. El desplazamiento ha sido posible programando, a travs de Set Property, las propiedades X Position e Y Position del target logo. La sintaxis para esta action es la siguiente: Set Property ( target, property ) = value donde target es el nombre de la instancia sobre la que settar la propiedad property con valor value. En el ejemplo que acabamos de ofrecer, la action para el botn "programa" es la siguiente:

On (Release) Set Property ("/logo", X Position) = x Set Property ("/logo", Y Position) = y End On

Cuando se deja de pulsar la tecla del ratn, logo adopta la posicin horizontal y vertical (x e y position) igual a los campos x e y (los valores que se han incluido en las casillas de texto). Tened cuidado de no incluir el valor de value como valor String Literali sino Expression pues de otro modo existira el riesgo de no ver ningn resultado. A diferencia de GetProperty, las propiedades de esta action se pueden elegir exclusivamente del men en cascada que Flash propone:

y se explicarn en la prxima leccin. Descarga el ejemplo de esta leccin Otras propiedades Dado que la sintaxis y el procedimiento para las otras propiedades de Set Property son iguales para todas, me limitar a describir el significado: "X Scale" e "Y Scale" Programa la escala de la clip (en porcentajes). En pocas palabras, indica el "zoom" de la clip.

"Rotation" Programa el grado de rotacin de la clip.

"Name" Es posible settar un nuevo nombre para la clip. La clip asumir un nuevo nombre y las referencias a ella con el viejo nombre no tendrn efecto. "Visibility" Programa la visibilidad de la clip. Settando un valor igual a 1 la clip se hace visible (si no lo es ya); con valor igual a 0 sin embargo, la clip se hace invisible.

"Alpha" Programa la transparencia de la clip (en porcentaje).

"High quality" Programa la alta calidad (1 activada, 0 desactivada) para la pelcula. No es posible asignarle esta propiedad solo a una clip. "Show focus rectangle" Si se le asigna valor 1 a esta propiedad, durante la visin del movie, clicando en la tecla TAB del teclado, se ver un rectngulo amarillo rodeando a la clip botn incluida. Asignad valor 0

para evitar todo esto; Tambin esta propiedad se puede asignar exclusivamente a toda la pelcula y no a clip individuales.

"Sound buffer time" Establece el nmero de segundos de streaming para el pre-buffer. Por defecto se ha settado a 5 segundos. Descarga los ejemplos de esta leccion en formato ZIP (36kb) La action FS Command permite enviar mensajes al programa host, en el cual est la pelcula Flash. El programa host puede ser el proyector Flash o bien el browser web. Utilizando FS Command para el proyector de Flash, la sintaxis resulta tan veloz como simple:

De hecho, basta con seleccionar una voz del menu For standalone player para conseguir que la orden se ejecute. stas las propiedades posibles: Fullscreen sita la pelcula en toda la pantalla (true para activarlo, false para desactivarlo). Allowscale Si true coloca la pelcula en la modalidad Mostra tutto. Si false coloca la pelcula al 100% de sus dimensiones sin escalas.

Showmenu Si true activa el men completo al clic del pulsante derecho del ratn sobre la pelcula. Si false desactiva la visin. Exec Ejecuta una aplicacin dentro del proyector (hay que especificar en arguments la aplicacin que se quiere ejecutar). Quit Cierra el proyector. Como ya se ha dicho, el action FS Command permite enviar mensajes al programa host que hospeda a la pelcula Flash. Si se envan informaciones al browser web hay que crear scripts capaces de "capturar" dichos mensajes e interpretarlos. En esta leccin propondr un ejemplo simple de cmo conseguir abrir una nueva ventana del browser de un botn Flash. No explicar, sin embargo, el funcionamiento del JavaScript pues no me aprece pertinente en un curso Flash. 1a Fase - Configuracin de los tag <OBJECT> e <EMBED> Para empezar, hay que preparar el cdigo HTML de la pgina web en la que est la pelcula Flash. Es necesario aportar algn pequeo cambio en los tag <OBJECT> y <EMBED> que asignan los parmetros a la pelcula Flash. Antes de nada, tenemos que convertir la pelcula "capturable" para los scripts. Para hacer esto, le damos un nombre a la pelcula Flash; con este nombre, despus, los scripts podrn identificar las informaciones que le enviaremos al browser. Aadamos a los dos tag <OBJECT> y <EMBED> las voces ID e NAME: <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab# version=4,0,0,0" WIDTH="100" HEIGHT="100" ID="AbreVen."> <PARAM NAME="MOVIE" VALUE="prova.swf"> <PARAM NAME="PLAY" VALUE="TRUE"> <PARAM NAME="LOOP" VALUE="FALSE"> <PARAM NAME="QUALITY" VALUE="HIGH"> <PARAM NAME="SCALE" VALUE="showall"> <EMBED NAME="AbreVen" swLiveConnect="true" SRC="prova.swf" SCALE="showall" PLAY="true" LOOP="false" QUALITY="high" WIDTH="100" HEIGHT="100" TYPE="application/xshockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/ index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED> </OBJECT> (el cdigo que se muestra sirve slo como ejemplo para comprender mejor la posicin de los parmetros ID y NAME) En este ejemplo se ha asignado a los parmetros ID y NAME el valor AbreVen. ste es el valor con el que los scripts podrn interceptar las informaciones e interpretarlas. El parmetro swLiveConnect se incluye exclusivamente en el tag <EMBED> y permite cargar Java en la visin de la pagina. De esta manera, el browser no ralentiza la ejecucin de los script cargando Java en el momento en que se abre la ventana.

2a Fase - Asignacin de la action en el botn Llegados a este punto, incluimos en la pelcula Flash la clip botn que le permitir ,cuando se clica, que se abra una nueva ventana del browser. Asignamos esta action:

On (Release) FS Command ("nueva-ventana", "http://www.htmlpoint.com") End On


dove nueva-ventana y el nombre que se hemos ya asignado a la orden (podemos asignarle cualquier nombre, es suficiente con que el valor en los scripts sea el mismo), y http://www.htmlpoint.com es el argumento (la nueva pgina web que hay que abrir). 3a Fase - Creacin de los script Podemos ya proceder a la creacin de los script que van a permitir que se abra una nueva ventana del browser. ste es el cdigo JavaScript que permite ejecutar la operacin: <SCRIPT LANGUAGE="JavaScript"> <!-function ApriFin_DoFSCommand(command, args) { if ( command == "nueva-ventana" ) { window.open(args,'','scrollbars=yes,width=650,height=400'); } } //--> </SCRIPT> La funcin Java DoFSCommand convoca a la pelcula Flash AbreVen y recupera las variables command y args (que en nuestro caso tienen valor "nueva-ventana" y "http://www.htmlpoint.com"). Cuidado! Si tenis intencin de modificar los valores de los parmetros ID y NAME tened cuidado de sustituir con el mismo valor el nombre de la funcin DoFSCommand. Pongamos un ejemplo: si en lugar de AbreVen hubisemos elegido seleccionar el nombre Pippo, la funcin JavaScript sera sta: Pippo_DoFSCommand(..). Como se ve, la funcin puede aceptar ms elecciones enviadas por Flash y ejecutar operaciones diferentes. De hecho, en este ejemplo se ejecuta la operacin de apertura de la ventana si el command es igual a nueva-ventana. Por tanto podemos incluir mas alecciones en la misma funcin y asignarle a cada una de ellas una operacin. Llegados a este punto, con Netscape podemos ver los resultados de la leccin, mientras que con Explorer tenemos que insertar una parte ms de cdigo:

<SCRIPT LANGUAGE="VBScript"> <!-// Para IE. Sub AbreFin_FSCommand(ByVal command, ByVal args) call AbreVen_DoFSCommand(command, args) end sub //--> </SCRIPT> siendo el VBScript el lenguaje por defecto. Esta breve funcin convoca el JavaScript creado anteriormente y le enva las variables recibidas por la pelcula Flash. Estos dos script hay que insertarlos dentro de los tag <HEAD> y </HEAD>. Profundizacin Por desgracia, la orden FS Command no es compatible con todas las versiones de los browser, como sucede si se quiere convocar JavaScript directamente con la accin Get Url. He aqu una tabla que resume la compatibilidad o incompatibilidad de los distintos browser:

Script para la marcacin plug-in

Load Movie

"JavaScript:" FSCommand, nel GetURL comunicacion entre Flash y JavaScript

Netscape 3.0 y superiores Mac 68k Mac PowerPC Windows 3.1 Windows 95/98/NT/2K No S No S No S No S

S S

No S

No S

No S

Internet Explorer 3.0 y superiores Versione 3 Macintosh Versin 4.5 Macintosh Versin 5.0 No No S No

No

Si

No

No

No

Macintosh Versin 3 Windows 3.1 Versin 3 Windows 95/98/NT Versin 4 Windows 95/98/NT Versin 5 Windows 95/98/NT/2K No No No No

No

Mira el resultado de esta leccin Descarga el ejemplo de esta leccin (file ZIP) A menudo puede ocurrir que se crean efectos dinmicos que necesitan la inclusin de ms instancias de una clip; esto hara que la pelcula fuese demasiado complicada de gestionar. Para evitarlo, se ha introducido en Flash la action Duplicad Movieclip que, cada vez que se utiliza, crea un duplicado (una instancia) de la clip especificada como target. He aqu un ejemplo muy simple:

Cuando se pulsa la tecla DUPLICA se ejecuta la action Duplicad Movieclip adems de la formulacin de otros parmetros que permiten desplazar la nueva clip duplicada ms a la derecha respecto a la original:

On (Release) Set Variable: "x" = x+1 Duplicad Movie Clip ("/logo", "logo" & x, x) Set Property ("/logo" & x, X Position) = (GetProperty ( "/logo", _x ) * x) End On

Como se ve por la imagen, es fcil entender la sintaxis de la action. En el parmetro target incluid el nombre de la clip original que se tiene que duplicar; en New Name dad el nuevo nombre que debe tener el duplicado y, para terminar, en Depth asignad un valor numrico de superposicin respecto a la clip original (qu clip tiene que superponerse a otra). Seguro que se habr notado que en los parmetros New Name y Depth no hay valores numricos, sino valores expression. El motivo hay que buscarlo en el hecho de que la action carece de valores de este tipo ("dinmicos"), Duplicad Movleclip slo tendra efecto una vez. En efecto, si hubiesemos incluido valores fijos logo1 y 1 respectivamente para New Name y Depth, cada vez que se eligiese el botn el nuevo duplicado sustituira al viejo sin crear uno nuevo. Por esta razon, es necesario incluir valores dinmicos. En efecto, cada vez que se libera el botn, se genera una clip con nombre "logo" & x; despus logo1 la primera vez; logo2 la segunda; logo3, la tercera, etc. (recordis el uso del operador & para concatenar ms cadenas?) Tambin Depth asume un valor dinmico que cada vez se va incrementando de unidad en unidad. La variable x tiene que asumir un nuevo valor (incrementado de 1) todas las veces que se libere el botn, por eso antes de ejecutar la action Duplicad Movieclip incluimos: Set Variable: "x" = x+1 Despus, para darle la nueva posicin a la clip que se acabe de duplicar, ser necesario utilizar la action Set Property que asigna un valor a la propiedad X Position (posicin horizontal) de la clip "/logo" & x: Set Property ("/logo" & x, X Position) Dado que la posicin de la nueva clip vara dinmicamente con el nmero liberaciones del bottone, es necesario crear una expresin que permita desplazar de tot pixel el nuevo duplicado que se haya generado: GetProperty ( "/logo", _x ) * x El valor de la posicin horizontal de la clip logo original hay que multiplicarlo por el valor de la variable x. Para evitar que la primera clip duplicada se superponga a la original ( x tendra valor 0), incluimos

Set Variable: "x" = "1" en el primer keyframe del movie Flash. Step by step Para entender mejor estas instrucciones, hagamos un test "step by step"... Entonces, se ejecuta la animacion y la variable x adquiere valor 1 (para la action incluida en el primer keyframe). Cuando el usuario clica en el botn y lo suelta, veamos qu sucede (suponiendo que la clip logo se haya colocado en posicin horizontal igual a 30):

ACTION Set Variable: "x" = x+1

RESULTADO 2 (da 1+1) Name: logo2 Depth: 2 60 (da 30*2)

Duplicate Movie Clip ("/logo", "logo" & x, x)

Set Property ("/logo" & x, X Position) = (GetProperty ( "/logo", _x )*x)

Por lo tanto, se genera una nueva clip logo2 con valores "duplicados" del orioginal (posicin, nombre y depth). La segunda vez que se suelta, esto es lo que pasa:

ACTION Set Variable: "x" = x+1

RISULTATO 3 (da 2+1) Name: logo3 Depth: 3 90 (da 30*3)

Duplicate Movie Clip ("/logo", "logo" & x, x) Set Property ("/logo" & x, X Position) = (GetProperty ( "/logo", _x ) * x)
y as para cada vez que se suelta el botn. Remove Movieclip

Con este parmetro, se elimina la clip especificada como target. Si las clip se han creado dinmicamente, es necesario especificar tambin este valor dinmicamente. Descarga el ejemplo de esta leccin

Quien haya tenido experiencias de programacin con cualquier lenguaje, puede saltarse tranquilamente esta leccin, ya que intentar explicar con brevedad el uso y el significado de la condicin IF. Os suceder a menudo que tenis que usar estas instrucciones en pelculas interactivas. Por ejemplo, si nuestra pelcula incluye un mdulo para enviar datos, no os parece "elegante" aadir un control de los campos? Es decir, una vez que el usuario ha clicado en el bottone "enva", la pelcula hace una comprobacin y, si todos los campos han sido compilados, el mdulo se enva; si no, aparece un mensaje que nos insta a compilar completamente el form.

Traduciendo las tres instrucciones if, then, else deducimos si, entonces, si no. En definitiva, las bases de la programacin. En la pelcula de antes, he empleado la condicin If de este modo: si nombre (nombre del campo) es igual a "" (nada... valor nulo, por lo tanto no ha sido digitado nada) o bien email (nombre del campo) es igual a "" entonces muestra el error si no enva el mdulo. Traducido al lenguaje interno de Flash:

If (nome eq "" or email eq "") Go to and Stop ("error") Else Go to and Stop ("enviado") End If
En Flash se omite la palabra Then tras la condicin If, y quiz esto puede confundir, pero basta incluir las action que hay que ejecutar, si la condicin es verdadera, despus de la cadena inicial If:

If (nombre eq "" or email eq "") Then Go to and Stop ("error") ... aqu se pueden incluir tambin otras action que ejecutar si la condicin es verdadera... End If
Para aadir la instruccin Else en Flash, hay que seleccionar la primera lnea de la condicin ( If (condicin) ) y clicar en el botn Add Else/Else If clause:

En el campo Actions se aadira la condicin Else y todo lo que se incluya inmediatamente despus se considerar "si no" (los dos campos de texto no tienen valores nulos). Como habris podido apreciar, la condicin IF utiliza algunos parmetros, llamados operadores lgicos, que implementan el uso. Estoy hablando de OR y AND. OR (o bien) permite verificar una condicin o bien otra (o tantas otras, depende de las veces que se aada). Por eso, para que la condicin resulte verdadera al menos una de las elecciones tiene que resultar verdadera. Con AND (y) sin embargo, tienen que satisfacerse todas las elecciones incluidas, pues si no la condicin no tendr lugar. Si en lugar de or hubiramos incluido and en el ejemplo anterior, la condicin se habra visto satisfecha slo si los campos nombre y email hubiesen resultado iguales a "". Una vez aadida la condicin Else y seleccionndola, tendremos la oportunidad de elegir Else o Else If:

Con Else If se puede aadir una condicin ulterior al bloque If... End If. Colocad despus de esta condicin todas las action que se tendran que ejecutar se si sta resultase verdadera. Descarga el ejemplo de esta leccin Cuando una action se tiene que ejecutar un cierto nmero de veces, se utiliza la instruccin loop, que permite crear un ciclo en cuyo interior se ejecutan las action para un tot nmero de veces.

Suponiendo que en nuestra pelcula necesitsemos incrementar la variable x en una unidad 100 veces, la sintaxis sera:

Loop While (x < 100) Set Variable: "x" = x + 1 End Loop


Todo lo que se encuentre dentro del bloque Loop... End Loop se ejecutar 100 veces. While significa "mientras", por eso: ejecuta el ciclo mientras x sea menor que 100. Observad el ejemplo de aqu abajo, en que se una la action Duplicate Movieclip en un ciclo loop:

Veamos cmo se presenta la action para la duplicacin del movieclip:

Loop While (x < 12) Set Variable: "x" = x + 1 Duplicate Movie Clip ("/logo", "logo" & x, x) Set Property ("/logo" & x, X Position) = (GetProperty ( "/logo", _x ) * x) End Loop
Para doce veces se: - incrementa x en 1 - duplicada la movieclip logo - desplazado el duplicado de x pixel hacia la derecha A menudo, el loop se usa con una variable que se incrementa en su interior como en este caso. Cada vez que se termina un ciclo, est el control sobre la condicin y por tanto es posible salir. En efecto, incluyendo una condicin IF se podra controlar el valor de x y, asignndole uno igual a 12, tener la salida prematura del ciclo. Descarga el ejemplo de esta leccin Call permite invocar el frame preciso de un movieclip o de una pelcula. Normalmente se usa para ejecutar operaciones comunes a ms clip de la pelcula. En efecto, no sera muy conveniente en trminos de tiempo asignarle a ms botones por ejemplo, las mismas action. En este caso, el papel de salvavidas lo desempea call. La sintaxis para call es: Call ("nomeclip:labelclip") donde nombreclip es el nombre de la instancia de la clip que se quiere invocar y labelclip la label a la que referirse.

Un ejemplo puede serlo un teclado numrico de este tipo:

El display de este teclado est en un movieclip llamado pantalla y cada vez que se presiona un botn numrico, se ejecuta esta action:

On (Release) Set Variable: "/pantalla:tecla" = "0" Call ("/pantalla:AadidaTecla") End On


Tecla es una variable que reside en el movieclip pantalla y por por esto se invoca empleando antes el nombre del movieclip "recipiente". Obviamente, su valor cambia segn el botn que se toque. En este caso, se muestra la action para el botn 0. Call invoca el frame con label AadeTecla del movieclip pantalla:

Como se puede ver, he separado con dos niveles las operaciones y el display del teclado. Esto permite que se trabaje mejor y que no se cree confusin con eventuales cambios futuros. En el frame AadidaTecla est presente esta action:

Set Variable: "display" = display & tecla


De esta manera, se le une a display el nuevo valor que viene del Release de la tecla seleccionada. Si fuese slo as, este ejemplo resultara escaso y, adems, no habra permitido que se entendiesen mejor las posibilidades del call, por tanto, no contentos con esto, aadamos una pequea comprobacin:-)

Queremos que este teclado digite exclusivamente 9 nueve cifras y no ms. Aadamos entonces un control en el frame AadeTecla que comprueba el display: si display es mayor de 9 cifras, entonces no incluir ms cifras, si no, aade:

ed ecco l'action:

If (Length ( display ) >= 9) Set Variable: "display" = display Else Set Variable: "display" = display & tasto End If
ste es el punto de partida para crear una calculadora en Flash. Ahora se ve mejor cmo puede facilitar nuestro trabajo la action call. En efecto, si no la hubisemos usado, tendramos que haber escrito las mismas acciones para cada botn del teclado. Descarga el ejemplo de esta leccin Flash es un software estudiado para la web con el cual se pueden crear efectos dinmicos y animaciones de alto nivel grfico sin aumentar excesivamente el peso del file exportado que se quiere descargar. Pero Flash no es slo esto. Flash es interactividad. Todo el que tiene fantasa y sabe usar bien este software es capaz de crear animaciones con un alto contenido de interactividad que divierte al usuario visitante. Hasta ahora he intentado explicar lo mejor posible el lenguaje interno de programacin de Flash, su corazn, porque es a travs de este lenguaje como es posible la interaccin entre el usuario y la mquina. Esta leccin est dedicada a la propiedad _droptarget. Habris visto algn sitio en el que un objeto tenga que trasladarse con el ratn a un punto preciso de la pelcula, no es as? Precisamente como en este caso (arrastrad al pequeo dentro del crculo):

La propiedad _droptarget restituye, despus del Drag Movieclip, la clip sobre la que se ha superpuesto la clip arrastrada (si no se ha arrastrado a ninguna clip, devuelve el valor nulo). De este modo, aadiendo un control, es posible establece qu tiene que ocurrir en el caso en que una clip se arrastrase dentro de otra. En mi ejemplo anterior, si la clip hombre se arrastra al crculo, primero deja de verse y despus se aparta de un frame el movieclip crculo (frame en el que se mostrar el crculo con el pequeo dentro y el interruptor "desengancha"). Pero vayamos por partes... Primero, creamos la clip movieclip hombre y dibujamos al pequeo hombrecillo del logotipo HTMLpoint. El mismo "pequeajo" lo usaremos para crear un rea sensible. Un rea sensible es una clip botn que contiene objetos slo en el frame HIT. De esta manera, el botn resulta invisible, pero es posible clicar en l. He aqu cmo aparece el botn rea_sensible:

Cuando se arrastre la instancia a la clip hombre, el botn aparecer transparente y de una tinta nica de distinto color:

Arrastrar el botn rea_sensible hasta hacerlo encajar perfectamente con el dibujo del hombrecillo:

El rea sensible es necesaria para conseguir que sea arrastrable la clip hombre. En efecto, el arrastre tiene que activarse cuando el usuario clica con el ratn sobre la clip hombre y desactivarse cuando se suelta el pulsante. Para hacer esto es necesario usar un botn dentro de un movieclip, dado que slo los movieclip tienen la posibilidad de tener un nombre en la instancia que les permita activar el arrastre, y slo los botones pueden usar la action On Mouse Event. Para que la clip hombre sea arrastrable incluymosla como action del rea sensible:

On (Press) Start Drag ("/hombre", lockcenter) End On On (Release) Stop Drag End On
De este modo, cuando el usuario clica sobre el hombrecillo, la clip se convierte en arrastrable hasta que se suelte el pulsante del ratn. Creamos tambin la clip movieclip crculo, dibujamos el crculo en su interior y le asignamos el mismo nombre a la instancia de ella. Cuidado de no insertar una clip graphic ya que el nombre de esta clip nos servir para el uso de _droptarget, pues este parmetro restituye exclusivamente nombres de las instancias de movieclip (o pelculas externas). Adase un frame al movieclip, disese el crculo con el hombrecillo dentro (de hecho, el logotipo completo) e inclyase un botn "desengancha" que permita que la operacin de arrastre se repita. En el botn "desengancha" asignense, por ejemplo, estas action:

On (Release) Set Property ("/uomo", Visibility) = "1" Set Property ("/uomo", X Position) = "205" Set Property ("/uomo", Y Position) = "65" Go to Previous Frame End On
que permite ver de nuevo la clip hombre, la coloca en un punto preciso de la pelcula y vuelve al frame anterior. Llegados a este punto, en las action del botn rea_sensible, aadimos el control sobre el arrastre:

On (Press) Start Drag ("/hombre", lockcenter) End On On (Release) If (_droptarget eq "/crculo") Set Property ("/hombre", Visibility) = "0" Begin Tell Target ("/crculo") Go to and Stop (2) End Tell Target End If Stop Drag End On
Viene controlado el valor de _droptarget. Si es igual a "/crculo" (ntese que est presente tambin el recorrido del movieclip) entonces se hace invisible la clip hombre y se direcciona al frame nmero 2 el movieclip crculo. Y aqu ya el juego est hecho. No queda sino testar nuestra nueva animacin interactiva. :-) Descarga el ejemplo de esta leccin La funcin Get Timer ofrece el tiempo transcurrido (en milsimas de segundo) desde el momento de la apertura de la pelcula Flash:

Programando el valor de una variable con el valor de Get Timer el resultado sera ste:

(obviamente, al clic en "start" el tiempo no comienza de 0 porque, como queda dicho, Get Timer ofrece el valor en milsimas de segundo desde el momento de la apertura de la pelcula Flash, prcticamente desde la apertura de la pgina web) Para acceder al tiempo en segundos, y no en milsimas, es necesario introducir una pequea expresin que permite transformar las milsimas en segundos:

Set Variable: "display" = Int(GetTimer / 1000)


donde display es el nombre del campo. Esta expresin transforma en entero (para evitar que los segundos esten en decimales... ) el valor de Get Timer dividido por 1000 (milsimas en segundos). He aqu el resultado:

Veamos entonces cmo construir un cronmetro similar al primer ejemplo que hemos mostrado. Necesitamos 3 frame de un nico nivel. El primer frame se asigna a la declaracin de algunas variables; el segundo para actualizar el campo de texto y el tercero para volver al precedente de manera que se repita continuamente la animacin. En un cronmetro los segundos llegan hasta 60 y despus vuelven a empezar de 0, no es verdad? Por desgracia, ser necesario resolver este problema, ya que Flash cuenta los segundos en progresin, sin pararse (habis notado que, pasados los 60, sigue aumentando el valor?). Empecemos asignando el valor a display (nuestro campo de texto) igual a:

Set Variable: "display" = min & ":" & sec


min identifica los minutos transcurridos; sec, los segundos, y sendos valores se unen entre ellos utilizando tambin el carcter : (qu cronmetro sera si no?). Ahora nuestra tarea ser asignarle los valores a min y seg. Puesto que seg tiene que volver a empezar de 0 una una vez que ha llegado a 60, no podemos asignarle directamente el valor de Int(GetTimer / 1000), por tanto tendremos que emplear otra variable x_seg para el resultado de esta expresin. De modo que tenemos x_seg que ofrece el valor del tiempo transcurrido en segundos. Cada cunto tiene que saltar de 1, min? Es obvio que despues de cada 60 segundos. Podemos utilizar otra variable, x_min, con valor inicial de 60 , que permite efectuar el control en x_seg:

If (x_seg = x_min) Set Variable: "seg" = 0 Set Variable: "min" = min + 1 Set Variable: "x_min" = x_min + 60

End If
Se x_seg es igual a 60 (supongamos que haya alcanzado los primeros 60 segundos), entonces setta la variable seg igual a 0 (inmediatamente se pone a cero...), aumenta en 1 la variable min (otro minuto ms) y aumenta tambin x_min en 60 (porque el siguiente control se tendr que hacer entre 60+60 segundos, es decir 120... entendido?). Esta condicin se repetir cada minuto del tiempo transcurrido. Falta slo settar la variable seg para cada segundo (hasta ahora se ha settado para cada minuto). He aqu la action:

Set Variable: "seg" = (x_seg - x_min) + 60


Esta action es muy personal... En concreto, seg tiene que asumir un valor de 0 a 60 para cada minuto que transcurre. Resulta imposible si se asigna directamente el valor de Get Timer por la razn ya expuesta, y por eso he creado esta simple expresin... Imaginemos que x_seg haya llegado a 124 segundos (o sea 2 minutos y 4 segundos), el resultado de esta expresin sera: (124 - 180) + 60 = 4 . x_min tiene valor 180, porque, teniendo como valor inicial 60, y aumentando cada minuto de 60, llegados a 124 segundos (2 minutos) resulta igual a 180. El +60 se ha incluido porque el valor de x_min es siempre mayor respecto a x_seg en 60. Se podra obviar aadiendo otra variable parecida a x_min, pero con valor inicial igual a 0 y no 60. En definitiva, para evitar que los segundos por debajo del valor 10 aparezcan sin el 0 delante de la nica cifra (1 en lugar de 01) metemos esta ltima action:

If (sec < 10) Set Variable: "seg" = "0" & seg End If
Y he aqu la action en su totalidad:

Set Variable: "x_seg" = Int(GetTimer/1000) Set Variable: "seg" = (x_seg - x_min) + 60 If (x_seg = x_min) Set Variable: "seg" = 0 Set Variable: "min" = min + 1 Set Variable: "x_min" = x_min + 60 End If If (sec < 10) Set Variable: "seg" = "0" & seg End If Set Variable: "display" = min & ":" & seg
Falta slo la programacin inicial de las variables x_min y min respectivamente a 60 y a 0, que habr que incluir en el primer frame de la animacin; as, el juego est hecho. Descarga el ejemplo de esta leccin Hoy por hoy, en todos los programas de grfica est presente un instrumento para recrear el efecto sombra en cualquier objeto (se trate de una imagen o de un texto). En Flash, por

desgracia, no existe una opcin de este tipo y, por tanto, hay que recurrir a una pequea estrategia.

Estos tres ejemplos se diferencian entre s slo por alguna pequesima modificacin. Veamos cmo crearlos... En una nueva clip graphic aadimos el texto deseado ("HTMLpoint" en este caso). Seleccionamos el bloque de texto y, del men Modify bajo la voz Curves, elegimos Break Apart. Este instrumento permite transformar el texto en vectores como si se tratase de cualquier dibujo. En este punto hay que aplicar al texto el instrumento Soften Edges, el cual permite recrear un efecto de fundido de los bordes del objeto. Seleccionando Soften Edges se abrir esta ventana:

Asignad a Distance el valor 6 para tener un efecto muy marcado:

El primer ejemplo ya ha sido recreado:-) Para el segundo, basta aadir un nuevo bloque de texto con la mismo contenido y colorearlo de blanco. Colocad el nuevo bloque de texto exactamente sobre el que se ha creato anteriormente... y voil! Tambin este ejemplo ha sido reproducido (mi consejo es aadir los bloques de texto en niveles separados y "bloquead" el de base -en este caso, el primer bloque de texto creado- para trabajar de la mejor manera posible en la superposicin).

Para el tercer ejemplo, antes de anada hay que colorear el texto en blanco de negro, despus seleccionar el bloque con el efecto soften y seleccionar, del men Modify, la voz Group (CTRL+G). Hay que transformar el objeto en smbolo con F8 (o con Insert - Convert to symbol), darle un nombre y aplicarle una transparencia del 75%. Desplazar ligeramente este smbolo hacia abajo a la derecha respecto al texto y tambin el tercer ejemplo esta hecho. El efecto "mquina de escribir" que seguramente habris visto en algunos sitios Flash, es muy fcil de conseguir tambin sin la ayuda de programas externos. Para empezar, creamos una nueva clip movieclip en el primer keyframe

inseriamo il testo desiderato:

Una vez incluido el texto, y decidido el alineamiento que le vamos a dar, del primer keyframe borramos todas las letras del texto menos la primera (en este caso "w"). Aadimos despus un nuevo keyframe y la segunda letra al bloque de texto. Hay que proceder de este modo hasta que se complete el texto:

Para cada keyframe incluido tenemos una nueva letra visualizada. Una vez que se ha terminado la movieclip, insertar en su ltimo keyframe , la action Stop y arrastrar una instancia a la pelcula principal. He aqu el resultado:

Aadiendo un minuto a nuestro tiempo de elaboracin de la pelcula, podemos obtener este efecto:

sta es la time-line de esta pelcula:

Descarga el primer ejemplo de esta leccin Descarga el segundo ejemplo de esta leccin Quien crea sitios web en HTML jams se habr planteado el problema del desplazamiento del texto, puesto que la gestin de esta parte se le deja al browser, que es el que se ocupa de ello. Sin embargo, en Flash es necesario "adaptarse" y encontrar un modo oportuno para solucionar este inconveniente. Flash propone una manera muy funcional en la tcnica, aunque un poco menos estticamente. Hay dos propiedades Flash que permiten la gestin del desplazamiento del texto, estas propiedade son .scroll y .maxscroll. Asociadas con una casilla de texto, permiten gestionar la visin en lneas: texto.scroll Ofrece el numero de la lnea superior visibile en la casilla de texto. Este valor puede modificarse dinmicamente. texto.maxscroll Muestra el limite maximo que resulta en el scroll de texto. Este valor es constante y no se puede cambiar.

Para entender mejor las dos propiedades pongamos un simple ejemplo. Si la tabla de aqu abajo fuese una casilla de texto llamada texto: ste es un ejemplo para entender de la mejor forma posible las propiedades

.scroll y .maxscroll de Flash. Con estas propiedades y posla propiedad texto.scroll ofrecera valor 1 (en tanto que se muestra en la anto la primera lnea del texto) mientras que la propiedad testo.maxscroll dara valor 5 (el nmero de la lnea que representa el lmite del campo de texto). Si aumentramos en 1 el valor de texto.scroll (por tanto resultara 2) tendramos: entender de la mejor manera las propiedades .scroll y .maxscroll de Flash. Con estas propiedades se puede programar el...,etc... , por tanto la segunda linea se convierte en el lmite superior y .maxscroll adopta siempre un valor igual a 5. Teniendo estos dos valores, resulta fcil ocuparse del desplazamiento. Dndole a +1 la propiedad .scroll del campo de texto, automticamente se desplazar hacia abajo, mientras si se da -1 para desplazamientos hacia arriba. Crear una casilla de texto con desplazamiento Explicar paso a paso cmo crear una casilla de texto que puede desfilar en la pantalla a travs de las propiedades .scroll y .maxscroll. Antes de nada, aadir en un nuevo nivel de la movie, una casilla de texto y darle un nombre... por ejemplo texto, para no complicarnos. Programar ya las dimensiones que tiene que tener usando el cursor para las dimensiones del texto:

Programamos las propiedades para la nueva casilla de texto apenas creada:

Es necesario Multiline, si no la casilla de texto tiene la dimensin de una sola lnea. Seleccionamos tambin Disable editing para evitar cambios por parte del usuario, pero dejamos desactivada la voz Disable selection, ya que podra resultarle til al usuario seleccionar el texto para copiarlo. Como ya se ha dicho, este mtodo para el scrolling es muy funcional, pero pierde estticamente. Y esto sucede porque la casilla de texto texto tiene que tomar el valor (es decir el texto... perdonad el juego de palabras) a travs de la action Set Variable (as no se podr tener formateado del texto). Es necesario actuar de esta manera porque si el texto se aade en el momento de la creacin de la casilla, esta toma altura segn sea la anchura del campo y no puede cambiarse (por lo tanto no podremos elegir la dimensin que queramos). En efecto, la altura de la casilla se adapta de acuerdo con la anchura programada (slo si hay texto dentro). Dicho esto, incluir en el keyframe de la casilla la action: Set Variable: "texto" = "bla bla bla" donde, obviamente, en lugar de "bla bla bla" se incluir el texto elegido. En este momento, introducimos en un nuevo nivel las dos clip botn que representan el "arriba" y el "abajo" para el texto. Para desfilar en la pantalla hacia abajo y hacia arriba, por desgracia no es suficiente aumentar o disminuir en 1 (1 lnea) la propiedad .scroll, es necesario tambin aadir controles que permitan "parar" el scrolling una vez que se ha llegado a la ltima lnea, para el scrolling hacia abajo, y a la primera lnea, para el scrolling hacia arriba. Por lo que respecta a la primera lnea, no hay problema: el valor de la primera lnea ser siempre igual a 1, mientras que el valor de la ltima lnea podemos tomarlo de .maxscroll. He aqu la action para la clip botn "arriba": On (Release) Set Variable: "scr" = texto.scroll If (scr > 1) Set Variable: "texto.scroll" = scr - 1 End If

End On Por tanto, cuando el usuario suelta el botn, la variable scr toma el valor de la primera lnea mostrada en ese momento, y despus se ejecuta el control: si scr es mayor de 1 (por tanto, no es la primera lnea), entonces disminuye en 1 el valor de texto.scroll de modo que la casilla se mueva una lnea hacia arriba, si no, si scr es igual a 1 (estamos en la primera lnea), no es mayor de 1, no pasa nada. He aqu la action para la clip botn "abajo": On (Release) Set Variable: "scr" = texto.scroll If (scr < texto.maxscroll) Set Variable: "texto.scroll" = scr + 1 End If End On Cuando se suelta el botn, scr toma el valor de la primera lneaa visualizada en ese momento y despus de hace el control: si scr es menor de texto.maxscroll (por eso no estamos en la ltima lnea), entonces aumenta en uno el scroll, si no, si scr es igual a texto.maxscroll no pasa nada. Veamos cmo resulta el ejemplo que acabamos de crear:

Para entender lo mejor posible el procedimiento, he incluido tambin los valores de texto.scroll y texto.maxscroll. Descarga el ejemplo de esta leccin Quien tiene bastante fantasa y habilidad al usar Flash, podra ya haber pensado cmo resolver el problema del scrolling de texto sin usar las propriedades .scroll y .maxscroll. En esta leccin, explicar un mtodo muy simple para crear uno. En nuestra animacin, incluimos una nueva clip graphic y un bloque de texto dentro:

Ahora creamos una nueva clip movieclip y aadimos la clip graphic texto dentro, creando un motion tween del texto que se desplaza de abajo hacia arriba de este modo:

La tcnica consiste en pilotar el scrolling del texto a travs de la action Tell Target, por tanto, cuando incluimos la instancia del movieclip del texto que se desplaza, le asignamos el nombre texto. Creamos las dos clip botn que identificaran los pulsantes "arriba" y "abajo" del scrolling. Darle al botn "arriba" esta action: On (Roll Over) Begin Tell Target ("/testo") Go to Next Frame End Tell Target End On De esta manera, cuando el usuario se coloca con el puntero sobre el botn "abajo", el cabezal de lectura frame se lleva delante de un frame desplazando el texto. Esto para el botn "arriba" con la nica diferencia que el cabezal de lectura frame se tiene que colocar en el frame anterior (Go to Previous Frame). Obviamente, el movieclip tiene que tener en el primero y en el ltimo keyframe la action Stop, si no existe el riesgo de que la animacin se ejecute sin motivo y al infinito. De esta manera el avance se generara exclusivamente cada vez que el usuario se coloca con el puntero en el botn. Queremos, sin embargo, que una vez situado sobre el botn el texto se mueva de forma continua sin tener que volver a colocar el puntero. Veamos cmo resulta la animacin sin este control (colocar ms veces el puntero encima de los botones de scrolling):

Para evitar todo esto, es necesario incluir un nuevo keyframe con una action que nos haga volver al frame precedente de manera que se efecte de nuevo el control sobre dnde se encuentra el puntero y, por tanto ejecutar el procedimiento sin esperar la nueva posicin:

En el primer keyframe de la animacin, asignar la action Stop, mientras en las action de los botones "arriba" y "abajo" del primer keyframe (slo el primero, el segundo no debe tener estas action) aadid Go to and Play ("scroll"): On (Roll Over) Begin Tell Target ("/testo") Go to Previous Frame End Tell Target Go to and Play ("scroll") End On donde scroll es la label que identifica el primer keyframe de la animacin (como se puede ver en la imagen de arriba). Aadiendo estas action el resultado ser ste:

Descarga el ejemplo de esta leccin

Cuando la dimensin de un file .swf comienza a ser demasiado grande como para ralentizar la reproduccin de la pelcula, se puede usar una funcion que

permite ver una animacin incluso mientras la pelcula no se ha cargado totalmente. Esta funcin se denomina preload o precarga. No es sino una action que utiliza el frame cargado en el momento en que se invoca y le es posible ejecutar el evento. sta es la sintaxis: If Frame Is Loaded ("fine") Go to and Play ("comienzo") End Frame Loaded En este caso fine es la label con la que se ha identificado el ltimo frame de la pelcula, y comienzo es el frame incial de la misma. Veamos cmo se lee esta action: si fine ha sido cargado entonces ve al frame comienzo y reproduce la pelcula Obviamente, el preload hay que incluirlo en el primer keyframe de la pelcula Flash, puesto que se tiene que ejecutar inmediatamente, al inicio de sta. En el segundokeyframe se deber incluir una action que remita al primero, si no el preload se comprobar slo la primera vez. Bastara incluir un Go to and Play (1) en el segundo frame para resolver este problema. Llegados a este punto, las action han sido creadas; falta slo aadir una animacin (un movieclip) en el primer keyframe del nivel preload para conseguir que se vea ya cuando la pelcula todava no ha sido cargada. Cuidado! Los primeros dos frame estn exclusivamente dedicados al preload. Adelantad la pelcula en 4-5 frame adelante como en la figura:

Si ya habis completado vuestra pelcula y quereis aadir solo ahora el preload, no hay problema: apartad el nivel preload a la ltima posicin hacia abajo (para no crear confusin), despus, trasladaos hasta el primer nivel de la animacin y seleccionad el primer frame. Manteniendo pulsada la tecla del ratn, desplazaos hasta el ltimo nivel de la animacin (excluyendo de este modo elpreload) y soltad la tecla del ratn. Ahora habis seleccionado todos los frame de la pelcula; en este momento, es suficiente clicar sobre el primero y hacerlo avanzar en 4-5 para trasladar la pelcula intera. Descarga el ejemplo de esta leccin Crear un preload es una operacin entusiasmante para la fantasa. Ya se han estandarizado preload con un porcentaje de avance o con una barra de desplazamiento. En esta leccion explicar cmo crear un preload con porcentaje de avance y con barra de avance.

Preload con porcentaje de avance No presenta grandes diferencias respecto al preload normal. Antes de nada, aadir un campo de texto en el primer keyframe del nivel preload y darle como nombre avance. En este momento, aadirle al action del preload la cadena: Set Variable: "avance" = int((_framesloaded * 100)/_totalframes) & "%" avance devuelve el resultado de la expresin que calcula el frame cargado en ese momento, lo multiplica por 100 y le divide los frame totales de la animacin (para encontrar el porcentaje). De convertir el nmero derivado en entero se ocupa la funcin int y adems se aade la cadena "%" para mostrar tambien el smbolo % al lado del nmero. Para ulteriores informaciones sobre _framesloaded y _totalframes os remito a las lecciones dedicadas. Preload con barra de avance Se introduce un nivel que llamaremos barra de desplazamiento y se arrastra una instancia de la clip donde se habr diseado ya la barra con su anchura total. Dadle a la instancia el nombre barra. Despues, abrid la ventana Transform (si no est abierta ya, la encontris en Inspector), y observad el valor escalar de la barra que se acaba de crear:

En el segundo frame del nivel barra de desplazamiento introducimos esta accin: Set Property ("/barra", X Scale) = ((int((_framesloaded * 100)/_totalframes)) * anchura) / 100 Nota: he puesto el punto de aparte con la action por motivos de espacio. De esta manera escalamos sobre el eje x la clip barra del valor resultante de la expresin. La expresin calcula primero el porcentaje de avance de la pelcula, despus la multiplica por anchura, variable que representa la anchura total (o la escala... que no es la misma cosa, pero en este ejemplo nos servimos de la escala porque no hay otra posibilidad para aumentar la dimensin de una clip) de la barra en pixel (he aqu la razn de que os haya hecho mirar en la ventana Transform de la barra), y que tendremos que settar en el primer keyframe de la pelcula. De este modo, la barra se puede escalar progresivamente hasta alcanzar su "anchura" total. Descarga un ejemplo del preload con porcentaje Descarga un ejemplo del preload con barra de avance

Sobre todo en los sitios de las empresas, resulta til e, incluso, necesario introducir un mdulo que rellenar para el envo de informaciones por parte del usuario interesado. Las prximas lecciones estn dedicadas exclusivamente a la creacin de los form para enviar datos, desde las ms simples hasta las ms complejas. Explicar nicamente los mdulos que permiten el envo de los datos a un CGI externo elaborador. No voy a explicar, por tanto, el envo de los datos directamente por correo electrnico. Un form de ese tipo:

Nombre: Telfono : Usuario:

Apellido: Email: Contrasea:

Informaciones:
Enva Reprogramar

es facilsimo reproducirlo en Flash. En este caso el form se refiere a una direccin desconocida "http://www.nomesito.com/cgi-bin/nomecgi.cgi" y obviamente se tiene que sustituir por el correcto. En su interior estn presentes tambin 2 campos escondidos. Veamos el cdigo HTML del mdulo: <form action="http://www.nomesito.com/cgibin/nomecgi.cgi" method="post"> <input type="hidden" name="mail" value="info@nomesito.com"> <input type="hidden" name="soggetto" value="Modulo utenti"> <div align="center"> <table border="0" cellpadding="4" cellspacing="0"> <tr> <td>Nombre:</td> <td><input type="text" name="nombre" size="15"></td> <td>Apellido:</td> <td><input type="text" name="apellido" size="15"></td> </tr> <tr> <td>Telfono:</td> <td><input type="text" name="tel" size="15"></td> <td>Email:</td> <td><input type="text" name="email" size="15"></td> </tr> <tr> <td>Usuario:</td> <td><input type="text" name="usuario" size="15"></td> <td>Contrasea:</td>

<td><input type="contrasea" name="contrasea" size="15"></td> </tr> <tr> <td colspan="4"> <p align="center">Informaciones: <textarea rows="4" name="info" cols="40"></textarea> <p align="center"><input type="submit" value="Enva" name="enva">&nbsp; <input type="reset" value="Reprograma" name="reprograma"></td> </tr> </table> </div> </form> Por lo tanto en el mdulo estn presentes 2 campos escondidos mail e sujeto, 5 capos de texto nombre, apellido, tel, email y usuario, un campo contrasea contrasea y , para acabar, un campo TextArea info. Nada ms fcil!

Campos de texto Para introducir campos normales de texto como nombre, es necesario incluir un bloque de texto con la funcin Text Field (campo de texto) activada:

Una vez creado el campo, clicad en l con el pulsante derecho del ratn y dadle el nombre a ese campo:

Repetid la operacin para todos los campos de texto presentes en el mdulo.

Campos TextArea Los campos TextArea tienen la particularidad de que se pueden compilar sobre ms lneas de texto respecto a lo nica lnea de los normales campos de texto. Para crear un campo de este tipo en Flash, la operacin es idntica al campo de texto normal, con la excepcin de tener que seleccionar la voz Multiline que se encuentra en la ventana Text Field Properties:

Activando esta opcin, es posible activar tambin Word wrap, que permite el punto y aparte automticamente con la palabra entera digitada si sta supera la longitud del campo:

Habris notado seguramente que para moverse arriba y abajo en el campo hay que usar el cursor de texto, no? Uhm... no resulta en absoluto funcional... intentemos intoducir un scroll de texto y veamos si mejora:

Decididamente mejor, no os parece? :-) Para entender cmo funciona el scroll de texto os remito a la leccin dedicada.

Campos escondidos Para crear campos escondidos hay 2 mtodos... El primero consiste en crear un campo de texto normal, escribir en l el valor asignado y colocarlo lejos del rea de trabajo, de manera que no se vea durante la reproduccin de la pelcula. Con el segundo mtodo, sin embargo, es suficiente asignar el valor a una variable con el mismo nombre del campo antes del envo de los datos y asunto concluido: Set Variable: "mail" = "info@nomesito.com" Set Variable: "sujeto" = "Mdulo usuario"

Campos contrasea Introducir un campo de texto normal y activar la opcin Contrasea:

Crear el pulsante Reprogramar Para recrear el efecto de este pulsante en Flash, hay que escribir unas action al Release del botn ponen a cero los vores de todos los campos de texto presentes en el mdulo: On (Release) Set Variable: "nombre" = "" Set Variable: "apellido" = "" Set Variable: "tel" = "" Set Variable: "email" = "" Set Variable: "usuario" = "" Set Variable: "contrasea" = "" Set Variable: "info" = "" End On

Crear el pulsante Enva Una vez creado el botn, asignarle esta action: On (Release) Get URL ("http://www.nomesito.com/cgi-bin/nomecgi.cgi", vars=POST) End On teniendo cuidado de seleccionar el tipo de envo de las variables (normalmente POST):

Otras propiedades Hay otras opciones seleccionables para un campo de texto.

Veamos cules:

Restrict text length to x characters limita la digitacin, dentro del campo, a x caracteres (x es el valor incluido). Disable editing desabilita la escritura en el campo de texto. Disable selection desabilita la la seleccin del texto en el campo (el usuario no es capaz de poder hacer copia/pega).

He aqu la traduccin del mdulo en Flash

Y es incluso ms bonito estticamente! ;-) Descarga el ejemplo de esta leccin Para la creacin de form ms complejos, se utilizan opciones particulares como las casillas de control (checkbox): Casilla de control

Lo primero, creamos 2 dibujos que representen la casilla activa/desactiva:

y los incluimos en dos frame diferentes de un nuevo movieclip que llamaremos checkbox. En el primero de estos 2 frame, incluimos la action Stop para evitar que el movieclip se repita con ciclo infinito. Hay que arrastrar una instancia del movieclip a la pelcula principal y darle el nombre check. Llegados a este punto, creamos un rea sensible (consltese la leccin dedicada), ya que

tendremos que hacer clicable la casilla de control, que cierre la casilla de control con el texto. Se coloca la instancia del rea sensible en en un nuevo nivel de la pelcula principal.

Las action que hay que asignarle al rea sensible tienen que conseguir que, si la casilla se anula, entonces se selecciones y viceversa. Para hacer esto, nos serviremos de una variable de nombre eleccin que tomar valor 0 en el caso en que se anule la seleccin y 1 si se selecciona (eleccin ser despus el valor que se enciar al CGI externo, as como el nombre de la casilla de control para la elaboracin de los datos; por tanto, asgnese el valor deseado en lugar de 0 y 1). Sobre la base de este valor, se dirigir el movieclip check al primero o al segundo frame (activado o desactivado) y se re-programar eleccin segn los casos: On (Release) If (scelta = 0) Begin Tell Target ("/check") Go to Next Frame End Tell Target Set Variable: "eleccin" = 1 Else Begin Tell Target ("/check") Go to Previous Frame End Tell Target Set Variable: "eleccin" = 0 End If End On Si eleccin es igual a 0 (desactivado) entonces coloca el cabezal de lectura frame del movieclip check en el siguiente (activado) y setta eleccin a 1, si no, coloca el cabezal de lectura frame en el frame anterior del movieclip check y setta la variable eleccin a 0. No queda sino incluir nuestra casilla de control en el form y hemos acabado. En efecto, en el momento del envo del mdulo, Flash enviar todas las variables, incluida eleccin. ste es el resultado:

Descarga el ejemplo de esta leccin Otra opcin para los form son los Radio Button, es decir los botones que permiten efectuar una sola eleccin entre diversas propuestas: Flash HTML JavaScript Applet Java Para empezar, dibujamos los pulsantes caractersticos de los RadioButton (crear nuevas clip graphic):

que, vistos al 100%, producen este efecto:

Crear un nuevo movieclip con nombre radio y introducir tantos RadioButton como sean las elecciones que el usuario pueda consultar, teniendo en cuenta que la primera eleccin tendr que seleccionarse:

Nel mio caso, le scelte possibili saranno 4. Se asigna al primer keyframe la action Stop. Inclyanse despus tantos keyframe como sean las elecciones posibles (4), y para cada keyframe, el RadioButton seleccionado tiene que resultar en el Button siguiente:

Crear un nuevo nivel y asignar para cada RadioButton una etiqueta (creando un nuevo nivel que cubra los 4 keyframe creados antes, impedir que se tenga que repetir la operacion por 4 veces):

Crear un rea sensible (consultar la leccin dedicada) que cubra un RadioButton y la etiqueta a l asignada e introducirle 4 instancias (para cada voz) en un nuevo nivel que llamaremos reas sensibles:

Para la primera rea sensible, sta es la action que ha que digitar: On (Release) Go to and Stop (1) Set Variable: "/:scelta" = "Flash" End On

Como se puede ver, la variable eleccin se inicializa en la pelcula principal de Flash. Esto se debe al hecho de que, cuando los datos se enven al CGI, Flash enva exclusivamente las variables presentes en dicha pelcula principal y no las que estn en las clip. Para las otras reas sensibles el procedimiento es el mismo, aunque cambia el valor de Go to and Stop(n) (donde para n habr que introducir el nmero de keyframe en que se debe colocar el cabezal de lectura frame, cuando el usuario clica en la voz deseada) y Set Variable: "/:eleccin" = " *** " (donde, en lugar de ***, hay que aadir el valor que tiene que adoptar eleccin segn sea la seleccin del usuario): On (Release) On (Release) Go to and Stop (2) Go to and Stop (3) Set Variable: "/:eleccin" = Set Variable: "/:eleccin" = "HTML" "JavaScript" End On End On He aqu el resultado: On (Release) Go to and Stop (4) Set Variable: "/:eleccin" = "Applet Java" End On

Descarga el ejemplo de esta leccin

Вам также может понравиться