0% encontró este documento útil (0 votos)
314 vistas73 páginas

Action Script 1

Este documento introduce ActionScript como un lenguaje de programación orientado a objetos utilizado principalmente en aplicaciones web animadas creadas en Adobe Flash. Explica que ActionScript se escribe en el panel de acciones de Flash y describe las secciones y herramientas de este panel. También resume cómo funciona la estructura jerárquica de ActionScript y cómo se inserta el código en diferentes elementos como líneas de tiempo y movieclips. Finalmente, presenta conceptos básicos como sintaxis, declaración y asignación de variables.

Cargado por

ulisescalde
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
314 vistas73 páginas

Action Script 1

Este documento introduce ActionScript como un lenguaje de programación orientado a objetos utilizado principalmente en aplicaciones web animadas creadas en Adobe Flash. Explica que ActionScript se escribe en el panel de acciones de Flash y describe las secciones y herramientas de este panel. También resume cómo funciona la estructura jerárquica de ActionScript y cómo se inserta el código en diferentes elementos como líneas de tiempo y movieclips. Finalmente, presenta conceptos básicos como sintaxis, declaración y asignación de variables.

Cargado por

ulisescalde
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 73

CAPITULO I: INTRODUCCIN ACTIONSCRIPT AL

Introduccin Histrica
ActionScript es un lenguaje de programacin orientado a objetos (OOP), utilizado en especial en aplicaciones web animadas realizadas en el entorno Adobe Flash, la tecnologa de Adobe para aadir dinamismo al panorama web. Fue lanzado con la versin 4 de Flash, y desde entonces hasta ahora, ha ido amplindose poco a poco, hasta llegar a niveles de dinamismo y versatilidad muy altos en la versin 8 de Flash. ActionScript es un lenguaje de script, esto es, no requiere la creacin de un programa completo para que la aplicacin alcance los objetivos. El lenguaje est basado en especificaciones de estndar de industria ECMA262, un estndar para Javascript, de ah que ActionScript se parezca tanto a Java script. El hecho que ActionScript sea una plataforma basada en el estndar ECMA-262, significa bsicamente que es un lenguaje altamente estructurado en clases y permite crear mega-proyectos de animaciones, formularios, bases de datos, etc.

Escritura y el Panel de Acciones


En Flash existe un panel en donde introduciremos el cdigo ActionScript respectivo, dicho panel se llama Panel de Acciones y aparece presionando la tecla F9.

El panel se etiqueta con el nombre Acciones seguido de un palabra clave que especifica el lugar en donde se est escribiendo el cdigo. El panel de Acciones se divide bsicamente en tres secciones: La biblioteca de referencia: Tiene un inventario completo de Clases, funciones, propiedades, mtodos, palabras clave, etc. del programa. El indicador de Seleccin Actual: Marca en donde estamos escribiendo el cdigo ActionScript y los diferentes elementos de la pelcula que esta programados El editor ActionScript: Este es el editor en donde se escribe las sentencias ActionScript.

En el editor ActionScript se puede crear mltiples pestaas a modo de trabajar en diferentes lugares simultneamente sin necesidad de ir donde el objeto o lnea de tiempo en donde se est insertando el cdigo. En la siguiente imagen se muestra una pestaa que indica que el cdigo que se digite en el editor ser en la capa 1: fotograma 1, y que se est ubicado en la lnea 1 y Columna 1 del cdigo.

En la parte superior del editor, se muestran una serie de botones que son de utilidad a la hora de programar y se detallan a continuacin Asistente de segundo nivel ActionScript: Genera una seccin de cdigo de las principales utilidades del ActionScript. Buscador: Herramienta que funciona igual que cualquier editor de texto primitivo y realiza la funcin de buscar y reemplazar. Generador de Rutas: Potente herramienta ActionScript que genera rutas absolutas o relativas de los objetos en Flash.

Verificador: Herramienta depurador de ActionScript que nos indica posibles errores de sintaxis en el cdigo ActionScript. Formato Automtico: Potente herramienta que realiza un dentado de cdigo. Consejos: nos muestra con un ToolTipText sugerencias para escribir cdigo ActionScript. Puntos de corte: Utilidad de depuracin que coloca puntos de corte para examinar el cdigo ActionScript en tiempo de ejecucin.

Fundamentacin de cmo funciona el ActionScript


ActionScript es un lenguaje orientado a objetos y por lo tanto maneja eventos, bsicamente cuando Flash se ejecuta como un fichero de su galera (un swf por ejemplo), el cdigo escrito se ejecuta dependiendo en donde est escrito. Por ejemplo, si el cdigo est en un botn, dicho cdigo se ejecutar hasta que se pulse sobre el botn, si el cdigo est en lnea de tiempo, este se ejecutar cuando el cabezal toque el fotograma respectivo en la lnea de tiempo y se podran muchos ejemplos ms. ActionScript tiene una estructura basada en las jerarquas de su fichero:

Es importante recalcar en esta estructura que puede haber un recursividad con las lneas de tiempo y los MovieClips, ya que bsicamente son lo mismo, con la nica diferencia que los MovieClips son lneas de tiempo de Biblioteca y las lneas de tiempo de las capas-Escenas no se encuentran en Biblioteca. Todos estos elementos (a excepcin de _root) tienen nombres definidos por el usuario.

Cuando corre una aplicacin el primer objeto que se activa es el _root que es el objeto madre de la aplicacin, posteriormente se irn tocando aspectos importantes de este objeto, posteriormente se activa la lnea de tiempo principal y este pone los dems objetos que se han creado en la pelcula. En tiempo de diseo (es decir, cuando se estn dibujando y creando los MovieClips, botones, etc.) se pueden colocar nombres a las instancias de botones, MovieClips y fotogramas en el panel del Inspector de propiedades; dichos nombres servirn para invocarlos cuando se est programando; En el caso de los fotogramas, los nicos que pueden tener nombres son los fotogramas claves.

Fundamentalmente el cdigo se inserta en cuatro lugares: 1- En lnea de tiempo principal (fotogramas) 2- En MovieClips 3- En Botones 4- En repositorios externos (Clases) Otra cosa importante a mencionar es que ActionScript aparte de ficheros de salida (swf), tambin tiene un panel de salida de sistema, que es una modalidad parecida a las consolas de SQL o Java. Programa 1(Funcin trace) o Crear un nuevo programa en Flash o o o Dar clic en el fotograma 1 (que ya es un fotograma clave) Presionar F9 verifique que en panel de Acciones diga Acciones fotograma, y escriba la siguiente instruccin:

trace(Mi primer programa);

Finalmente presione Ctrl+Enter y vea el resultado.

Se activar el panel de salida, en donde se muestra el mensaje que se coloc en medio de la funcin trace. Dicho panel de salida, se estar ocupando a lo largo de este curso.

Sintaxis en ActionScript
Talvez el primer punto y ms importante a tomar en cuenta es que las instrucciones en ActionScript terminan con un punto y coma. instruccin; Existen palabras reservadas que el generacin) de Flash reconoce con color azul. stop(); A continuacin se listarn algunas instrucciones bsicas que se comenzarn a utilizar para los primeros programas en ActionScript: stop(); gotoAndPlay (10); play(); gotoAndStop (10); Detiene el cabezal en la lnea de tiempo en el fotograma en donde se coloc dicho cdigo. Instruccin que mueve el cabezal al nmero de fotograma o nombre de fotograma especificado y se pone en marcha. Pone el cabezal en marcha Instruccin que mueve el cabezal al nmero de fotograma o nombre de fotograma especificado y se detiene. compilador (de tercera

EJERCICIOS DEL CAPITULO I


Ejercicio1: Realice una pelicula en Flash a velocidad de 25 fotogramas por segundo, dicha animacin debe tener una duracin de 100 fotogramas, la animacin saltara del fotograma 25 al fotograma 75, cuando llegue al fotograma 100, este se regresar al fotograma 50 y ah se detendr la animacin. Ejercicio2: Realice un programa en Flash, que Imprima su nombre y apellido en el panel de salida del sistema (con la funcin trace).

CAPITULO II: VARIABLES Y OPERADORES


Variables
Las variables, las podemos comparar a cuentas de banco en donde colocamos cierta cantidad de dinero, as de esta forma cuando creamos cuentas de banco, para poderlas utilizar las llamamos por su nmero de cuenta y no por la cantidad de dinero que se tiene (que puede variar). Las variables en ActionScript no se diferencian mucho de las variables de otros programas, as de esta forma se puede crear variables de los siguientes tipos (bsicos): Numricas enteras: Contienen datos numricos enteros, es decir no decimales. 1 200 5963 Flotantes: Contienen datos numricos de tipo decimal o Cientfico 1.2 5.63665 3.14159 2x105

Strings: Contienen datos Alfanumericos, es decir, letras o nmeros David la sabidura es aplicar, no es saber hola Boleanos: Contienen datos que pueden tener solamente dos valores: True o False

Una visin importante del ActionScript es que las variables se declaran a manera de los lenguajes de Alto nivel (Bueno!, ActionScript es de alto nivel tambin!), tomando en cuenta que las variables no pueden tener multiples tipos de datos, es decir, si una variable es String, dicha variable ser String hasta que muera, si otra es numrica, dicha variable ser nmerica siempre y asi sucesivamente. Otro factor es el nombre de la variable, la versin ActionScript 2.0 soporta la diferencia entre maysculas y minsculas, es decir, si existe una variable con nombre Cuenta est no ser igual a otra con nombre cuenta, a este fenmeno se le llama "case sensitive". Estas no son las nicas variables en ActionScript, pero son las bsicas con las que se puede comenzar a trabajar, posteriormente se vern las variables de Alto nivel.

Declaracin de variables
La sintaxis bsica para crear variables en ActionScript es la siguiente: var NombreVariable:TipoDeDato Donde var es una palabra reservada que indica que se va a declarar o crear una variable; NombreVariable, es cualquier nombre arbitrario siempre y cuando no sea una palabra reservada del lenguaje, y TipoDeDato sea un tipo de dato soportado por el lenguaje (ya vimos cuatro). Se detallan algunos ejemplos explcitos: var Sueldo:Number; var Apellido:String; var Estado:Bolean; En los ejemplos anteriores se han declarado o creado, tres variables, una de tipo Numrico, otra de tipo de Alfanumrico y la otra de tipo Booleano. Afortunadamente el compilador de Flash coloca un facilitador en el momento de estar escribiendo dicho cdigo (Note la cantidad de tipos de datos que ofrece el ActionScript)

Para asignar nombres a las variables, utilizamos el operador (=) Sueldo=300; Apellido=Pleitez Gonzalez; Estado=true;

Tambin puede asignar valores inciales de una sola vez: var Sueldo:Number=300; var Apellido:String=Pleitez Gonzalez; var Estado:Bolean=true; Inclusive puede declarar mltiples variables en la misma lnea de instruccin, utilizando comas: var Sueldo:Number=300, Estado:Bolean=true; Apellido:String=Pleitez Gonzalez,

Programa 2 (Creacin y asignacin de variables) o Crear un nuevo programa en Flash o o o Dar clic en el fotograma 1 (que ya es un fotograma clave) Presionar F9 verifique que en panel de Acciones diga Acciones fotograma, y escriba la siguiente instruccin:

var Nombre:String; Nombre=Carlos David; trace(Nombre);

Finalmente presione Ctrl+Enter y vea el resultado.

En este programa, hemos declarado una variable de Tipo String, posteriormente en la lnea 2 le asignamos un valor (con sus respectivas comillas), y finalmente con la funcin trace mostramos el valor de dicha variable en la Salida de consola del ActionScript.

Operadores
Los operadores son smbolos que utiliza ActionScript para poder realizar operaciones matemticas y lgicas sobre los operadores, a continuacin se detallan: + * / % = += OPERADORES MATEMATICOS Suma nmeros, o concatena caracteres. Resta nmeros Producto o Multiplicacin de operandos Divisin, denotando cantidad decimales si es necesario. Residuo, operador que se utiliza para calcular el residuo entre dos nmeros. OPERADORES DE ASIGNACIN Asignacin de valor a una variable Prefijos de asignacin es un operador que realiza dos operaciones, la operacin matemtica que le antecede y despus la asigna a la variable, por ejemplo: x+=1;, es el equivalente a x=x+1; esta misma lgica se aplica a las dems funciones: UNARIOS Incrementa el valor en 1 Decrementa el valor en 1 Negacin Informacin de tipo de datos Informacin no definida LOGICOS Igualdad Desigualdad Mayor que Menor que Mayor o igual Menor o igual

++ -! typeof void == != > < >= <=

Algunos ejemplos de utilizacin de operadores

x=1; x=1+4; x+=2; x--; 1!=2 1==2

Asigna el valor de 1 a la variable x Suma 1 y 4 y lo asigna a la variable x Suma x y 2 y asigna el valor a x Realiza la operacin x-1 y lo asigna a x Compara 1 y 2, como son diferentes da true Compara 1 y 2, como son diferentes da false

Programa 3 (Uso de variables y operadores) o Crear un nuevo programa en Flash o o o Dar clic en el fotograma 1 Presionar F9 verifique que en panel de Acciones diga Acciones fotograma, y escriba la siguiente instruccin:

//inicializando variables var numero1:Number=0, numero2:Number=0, numero3:Number=0; numero1++; //Aumentando numero1 en 1 //Restando numero2 y numero1 y asignndolo a numero1 numero2=5*(3+3); //asignando 30 a la variable numero2 numero3=numero2-numero1; trace(numero3); //resultado 29 o Finalmente presione Ctrl+Enter y vea el resultado.

Nota: Para este programa utilizamos parntesis que es considerado


otro operador, pero es un operador que rompe las jerarquas matemticas; tambin utilizamos la sentencia // para colocar comentarios en el programa que tambin ser de aqu en adelante- obligatorio para poder documentar los programas.

mbito de las variables


Las variables tienen una limitante, no se pueden utilizar de modo anrquico en cualquier parte del cdigo una vez declaradas. Es decir, si se declara una variable en la lnea de tiempo principal (_root), esta variable podr utilizarse solamente en dicha lnea y para poderla invocar desde un MovieClip o un Botn se utilizara otro tipo de sentencias que despus se vern. Una buena prctica de programacin es crear las variables desde el principio de la pelcula, es decir por lo general en el fotograma 1; tambin es usual programar en una capa vaca de objetos Flash, para poder escribir el cdigo sin ningn problema. En el siguiente programa se ver la utilizacin de variables a lo largo de la lnea de tiempo. Programa 4 (Uso de variables y operadores en Lnea de tiempo principal) o Cree una animacin de una diligencia que se dirija en lnea recta a lo largo de cuatro paradas (hasta el fotograma 40) as de esta manera habr fotogramas claves en 10, 20, 30 y 40 (Recordndole que a este nivel ya se da por entendido que maneja animacin Flash)

Ahora de clic al fotograma 1 de la capa animacin y digite el siguiente cdigo:

//inicializando variables var estacion1:Number, estacion2:Number, estacion3:Number, estacion4:Number;

estacion1=10; //dando valor a estacion1 estacion2=estacion1*2; //dando valor a estacion2 o Ahora de clic al fotograma 10 de la capa animacin y digite el siguiente cdigo:

//dando valor a estacion3 estacion3=estacion1+estacion2; gotoAndPlay(estacion3); //yendo al fotograma 30 o Ahora de clic al fotograma 40 de la capa animacin y digite el siguiente cdigo:

var IntervaloEstaciones:Number; //Declarando una nueva variable IntervaloEstaciones=estacion2-estacion1; //Dando el valor de 10 estacion4=estacion3+IntervaloEstaciones; //Calculando el valor de estacion4 gotoAndPlay(estacion4-2*IntervaloEstaciones); //regresando a la estacion2

Ahora de clic al fotograma 20 de la capa animacin y digite el siguiente cdigo:

stop(); //Deteniendo la animacin o Pruebe la pelcula.

Aunque el cdigo aqu descrito para este ejercicio es bastante imprctico, no es la intencin serlo de momento. El programa explica algunos apartados importantes. Las variables se utilizaron a lo largo de la lnea de tiempo principal y funcionaron perfectamente. la funcin gotoAndPlay no solo se le pueden enviar nmeros sino tambin expresiones complejas, como se ver ms adelante tambin se le pueden enviar los nombres de los fotogramas. En el fotograma 40 se declaro una nueva variable (IntervaloEstaciones), esto quiere decir que siempre y cuando se respete la sintaxis las declaraciones pueden ir en cualquier parte de una pelcula.

Nunca usar una variable que no se ha declarado antes, es decir, si se hubiese querido usar la variable IntervaloEstaciones en el fotograma 1, aunque Flash talvez no diese error de compilacin, esto da lugar a errores lgicos y a mala praxis programacional. El mbito de las variables en ActionScript es talvez uno de los aspectos ms importante para comprender la estructura del lenguaje, y mucho de esto tiene que ver con los objetos creados en Flash. Hasta el momento se han creado variables en lnea de tiempo principal, pero Qu ocurre cuando se quiere crear una variable en un MovieClip por ejemplo?, El alcance de dicha variable ser solo del MovieClip o tambin se podr invocar en la lnea de tiempo principal? Para poder contestar esto, tenemos que visualizar que en ActionScript se sigue una jerarqua (ver diagrama del captulo 1), y cuando un objeto se encuentra dentro de otro objeto, para poderlo invocar a l o cualquiera de sus propiedades, tenemos que usar el operador punto (.) de esta manera: ObjetoMadre.ObjetoHijo Bsicamente en ActionScript 2.0 existe una ley: Toda variable, MovieClip, Botn, Pelicula, Imagen, Grafico, etc., son objetos El Concepto Objeto se desarrollar en un nivel superior, pero dado que ActionScript es un lenguaje orientado a objetos (OOL), es imposible no tocar algunos de sus tendencias en los niveles bsicos. Hasta el momento las variables se han ido declarando en la lnea de tiempo principal, por lo tanto dichas variables son objetos de dicha lnea de tiempo, ya que la lnea de tiempo es el estandarte del objeto madre de la pelcula Flash (_root), las variables se pueden invocar tambin de la siguiente forma: _root.NombreVariable Por ejemplo, analice el siguiente cdigo var Sueldo:Number=10 trace(_root.Sueldo); trace(Sueldo); Este cdigo, generara en el panel de salida:10, y lo generara dos veces pues Sueldo es un objeto hijo de la lnea principal (_root). E invocar Sueldo _root.Sueldo hablamos de lo mismo.

Ahora hay que complicarse un poco ms; Cmo se podra invocar una propiedad que pertenece a un MovieClip que se ha insertado en la lnea de tiempo principal? Para poder hacer esto, analice el siguiente programa: Programa 5 (Uso de variable que estn en Objetos secundarios) o Cree un MovieClip, colquele el nombre estrella en el panel del Inspector de propiedades (vea la figura siguiente)

De doble clic sobre el MovieClip y en el fotograma 1 del objeto digite lo siguiente: var Nombre:String="Polar";

Ahora regrese a la lnea de tiempo principal y en el fotograma 1 digite lo siguiente

trace(Nombre); //Intento de publicar la variable Nombre trace(estrella.Nombre); //Intento de publicar la variable Nombre con su objeto madre o Cree un nuevo fotograma Clave y en dicho fotograma clave digite lo siguiente: trace(Nombre); //Nuevo intento por publicar la variable Nombre trace(estrella.Nombre); trace(_root.estrella.Nombre); stop(); //se detiene la pelicula o Guarde y vea el resultado:

El porqu salen 3 Undefined y dos polares se explican a continuacin: En el primer fotograma la variable Nombre no existe, ni en lnea de tiempo principal, ni en el mismo MovieClip, por lo tanto, los primeros dos trace publican Undefined (variable no definida). Recuerde que el MovieClip corre a la misma velocidad que la lnea de tiempo principal, por lo tanto, la variable en el MovieClip existe hasta que el cabezal pasa el fotograma1. En el fotograma 2 la variable Nombre sigue sin existir, y por eso el tercer Undefined, pero al invocar la variable estrella.Nombre se publica su valor (Polar). Es interesante la ltima invocacin: _root.estrella.Nombre Esto significa que existe un objeto Nombre, que est dentro del objeto estrella, pero a su vez, este est dentro del objeto madre _root. Y como existe dicha variable, se publica su valor. Un corolario de lo visto hasta el momento, es que podra existir dos variables con el mismo nombre, siempre y cuando estos se encuentren en objetos diferentes.

Variables tipo String


Las variables String son objetos y por lo tanto tienen propiedades y mtodos, talvez este hecho no quede claro de momento pues los objetos merecen un apartado especial, pero se vern algunas funcionalidades que tienen los String; se limitar a decir de momento que las propiedades y mtodos de los String se invocan como objetos de estas variables y los mtodos se les agrega parntesis y un parmetro. Algunos de estos mtodos y propiedades son las siguientes: length; charAt(ind ex); slice(start, end); Propiedad que devuelve la cantidad de caracteres que tiene el String Mtodo que devuelve el carcter que se encuentra en la posicin index del String Mtodo que devuelve una cadena de caracteres desde la posicin start hasta la posicin end del String

Existen muchos ms mtodos (ver referencia del lenguaje de ActionScript en Flash), aunque para iniciarnos en el funcionamiento de los objetos String, es suficiente. Por ejemplo analice el siguiente cdigo: var Frase:String="Abracadabra"; trace("Analisis de la palabra: "+Frase);

trace("La Palabra tiene: "+Frase.length+" letras"); trace("En la posicin "+0+" esta la letra: " +Frase.charAt(0)); trace("Parte de la palabra: " +Frase.slice(0,4)); Analicemos las 5 lneas de cdigo var Frase:String="Abracadabra"; Se declara una variable de nombre Frase y se le asigna el valor Abracadabra.

trace("Anlisis de la palabra: "+Frase); Aqu ocurre algo nuevo: la funcin trace recibe dos parmetros: una cadena de caracteres (Anlisis de la palabra: ) y la variable (Frase), el operador + lo que hace es concatenar ambas cadenas y el resultado es: Anlisis de la palabra: Abracadabra Ahora vienen las otras tres lneas: trace("La Palabra tiene: "+Frase.length+" letras"); En esta lnea se concatenan dos cadenas y un numero; la primera cadena es La Palabra tiene: , la segunda cadena es letras (note los espacios) y el nmero es la propiedad de la variable String Frase length que para invocarla es Frase.length que para este caso es 11; el resultado es: La palabra tiene: 11 letras Lo importante de esta sentencia, aparte de la utilizacin de la propiedad length es que la suma de una cadena de caracteres y un nmero es otra cadena de caracteres en donde concatena ambos. Ahora la siguiente lnea: trace("En la posicin "+0+" esta la letra: " +Frase.charAt(0)); Esta lnea tambin concatena, pero aqu se invoca la funcin charAt(index), en el lugar del index se encuentra un 0 que indica la posicin 0 y ah se encuentra la primera letra de la variable Frase, esto se explica mejor en la siguiente tabla de esta variable: A 0 b 1 r 2 A 3 C 4 a 5 d 6 a 7 b 8 r 9 a 10

En la posicin 0 se encuentra la letra A, en ActionScript como en otros lenguajes, la primera posicin es siempre 0 y no 1 como el sentido comn indica. El resultado sera: En la posicin 0 esta la letra: A Finalmente: trace("Parte de la palabra: " +Frase.slice(0,4)); La Funcin slice lo que hace es devolver un pedazo de la cadena de caracteres entre la posicin 0 y la posicin 4 (aunque esta posicin no se toma en cuenta en el pedazo resultante) as que basndonos en la tabla antes vista, los caracteres que devuelve la funcin slice son Abra, as que el resultado de esta lnea es: Parte de la palabra: Abra

Uso de variables String en el objeto Entrada de Texto y Texto Dinmico


Existen dos objetos dinmicos de texto que no se utilizan exactamente para animarlos pero que dan mucha interactividad con el usuario, prcticamente ambos hacen lo mismo, con una sutil diferencia: Entrada de Texto: Objeto en Flash que se utiliza para que el usuario digite en la pelcula. Texto Dinmico: Objeto en Flash que se puede manipular con cdigo en tiempo de ejecucin de la pelcula. En la siguiente tabla se muestran algunas propiedades de estos objetos background background Color text maxChars Propiedad tipo booleano que especifica si el campo de texto tendr color de fondo Especifica en color tipo Hexadecimal que contendr. Valor String del campo de texto Cantidad mximo de caracteres que contendr el campo de texto.

Para ver ms propiedades y mtodos- de estos objetos, vea el manual de referencia. El siguiente ejemplo utiliza estos tipos de objetos y de paso se utiliza una funcin nueva.

Programa 6 (Uso de Introduccin de texto y Texto Dinmico) Cree un Nuevo documento de Flash e Introduzca dos objetos de Introduccin de Texto en el fotograma1, colquele los nombres de txt_1 y txt_2 respectivamente a los campos de texto, tambin configure que el tamao del texto sea de 30.

Introduzca ahora otro objeto, pero esta vez de Texto Dinmico y colocarle el nombre de txt_suma, y configure que su tamao sea de 30.

Inserte un botn que diga suma

De clic en el fotograma1 y digite lo siguiente:

var num1:Number=0, num2:Number=0, suma:Number=0; //Crea tres variables para la suma txt_1.background=true; //Establece que txt_1 tendr color de fondo txt_2.background=true; // Establece que txt_2 tendr color de fondo txt_1.backgroundColor=0xFFFF00; //Asigna el color Amarillo a txt_1 txt_2.backgroundColor=0xFFFF00; //Asigna el color Amarillo a txt_2 txt_suma.border=true; //Coloca borde a txt_suma que es el texto dinamico o De clic en el botn y digite lo siguiente: //Evento del botn on(release){ //se invoca num1 y se le asigna el valor nmerico del campo de texto txt_1 _root.num1=Number(_root.txt_1.text); //se invoca num1 y se le asigna el valor nmerico del campo de texto txt_2 _root.num2=Number(_root.txt_2.text); //se invoca suma y se le asigna el valor de la suma de num1 y num2 _root.suma=_root.num1+_root.num2; //se le asigna el valor de suma al texto dinmico txt_suma _root.txt_suma.text=_root.suma; } o Ahora pruebe el resultado:

Es importante mencionar algunos puntos: La propiedad backgroundColor es una variable de tipo Color, un tipo de variable no tratado hasta el momento, pero de fcil entendimiento si se tiene en cuenta que para poder asignar un valor, el valor debe ir precedido de 0x y el cdigo hexadecimal correspondiente. Note como se invoco a las variables num1, num2 y suma desde el botn. Como son variables que se crearon en la lnea de tiempo principal, hay que anteponerles el nombre de su objeto madre, en este caso _root.

El uso de una funcin llamada Number(); que lo que hace es que convierte lo que va entre parntesis en nmero, tomando en cuenta que la propiedad text de los campos de texto son String. Con esto se finaliza este captulo tomando en consideracin que no se han visto todos los tipos de datos en las variables, y que como objetos que son, existen muchos ms estructurados y complejos que se les dedicaran captulos aparte.

EJERCICIOS DEL CAPITULO II


Ejercicio1: Realice un programa en ActionScript que declare variables que contengan su Nombre, Apellido, Edad y Aficiones y que imprima en el panel de salida, la siguiente oracin: Hola a todos, soy Nombre Apellido, y mi edad es Edad Mis aficiones son: Aficiones Ejercicio2: Realice un programa en ActionScript que declare cinco variables: Nombre, Sueldo, AFP, ISSS, renta y SueldoNeto, inicialice la variable sueldo con 400, y calcule el AFP (6%), ISSS(11%) y renta(10%) y el SueldoNeto; finalmente imprima en el panel de salida lo siguiente: Hola a todos, soy Nombre Mi sueldo es de Sueldo dlares Y me descuentan de: AFP: AFP dlares Seguro Social: ISSS dlares Renta: renta Asi que mi sueldo neto es: SueldoNeto Ejercicio3: Realice un programa en Flash, que haga lo mismo del ejercicio anterior, pero esta vez que salga impreso cuando el usario de clic en un botn. Ejercicio4: Realice un programa en Flash, que haga lo mismo del ejercicio 2, pero esta vez, que los datos del Nombre y del Sueldo sean digitados por el usuario en un Campo de texto y salgan los datos de AFP, ISSS, renta y Sueldo Neto en Textos dinmicos al presionar un botn. Trate de colocarle un poco de su creatividad.

CAPITULO III: CONTROL DEL FLUJO


Hasta el momento, todas las sentencias que se han utilizado llevan un orden secuencial, es decir que primer sentencia escrita, primera que se ejecuta, la ltima sentencia que se ejecuta es la ltima que se escribe, sin embargo existen sentencias que alteran eso; Son las sentencias de flujo y son necesarias para ejecutar operaciones ms complejas en los programas ActionScript. Las sintaxis de estas sentencias de flujo no varan mucho de la de las sintaxis de los lenguajes parientes a ActionScript y para cualquier persona con previa experiencia en programacin no son tan difciles de

comprender. Sin embargo en este captulo se estudiarn sus sintaxis y aplicaciones. Esas sentencias son: La sentencia IF La sentencia IF-ELSE La sentencia IF-ELSE IF La sentencia SWITCH Sentencia WHILE Sentencia DO-WHILE Sentencia FOR

Sentencia IF-ELSE-IF
Esencialmente, un condicional es una manera de elegir entre dos diferentes caminos de accin, dependiendo de si se cumple una determinada condicin. La sintaxis de ActionScript para un condicional es: if (condicin se cumple){ sentencias que se ejecutan si la condicin est cumplida; } y en un modo ms general if (condicin se cumple){ sentencias que se ejecutan si la condicin se cumpli; } else { Sentencias que se ejecutan si la condicin no se cumpli ; }

En la parte de la condicin se utilizan los operadores lgicos ya vistos (==, <=, >=, !=), y se vern tres nuevos: la operacin And, Or y Not. && || ! Operador And, que se devuelve true cuando dos sentencias son verdaderas. Operador Or, que devuelve true si cualquiera de las dos sentencias con verdaderas Operador Not, que devuelve lo contrario a lo que da la sentencia (ya se true o false) Ejemplos: var Numero:Number=20;

if(Numero==20){ trace("El numero es 20"); } Este cdigo declara una variable Numero y le asigna el valor de 20, posteriormente se realiza la pregunta es Numero igual a 20?, en este caso como la condicin resulta afirmativa se ejecuta la sentencia trace. var Edad:Number=20; if(Edad<18){ trace("Eres menor de edad"); } else{ trace("Eres Ciudadano, felicidades!"); } Este cdigo declara una variable Edad y le asigna el valor de 20, posteriormente se hace la pregunta es Edad menor a 18?, si esto es cierto publica Eres menor de edad, sino publica Eres ciudadano, felicidades!, en este caso se cumple la sentencia else.

var Sueldo:Number=800; var Renta:Number=0; if( Sueldo < 300){ Renta=0.1 trace("no se descontar renta"); } else if(Sueldo>=300 && Sueldo <=600){ Renta=Sueldo*0.12; trace("Se descontar de renta: "+Renta+" dolares"); } else if(Sueldo>600 && Sueldo <=1000){ Renta=Sueldo*0.18; trace("Se descontar de renta: "+Renta+" dolares"); } Un cdigo ms elaborado, se declara una variable Sueldo y se le asigna el valor de 800, posteriormente se realiza una pregunta es Sueldo menor a 300?, si esto es cierto Renta es 0, sino se vuelve a preguntar (else if) Es sueldo mayor o igual a 300 y menor o igual a 600? Si esto es cierto se hace el clculo de renta respectivo, si esta pregunta no es cierta, se vuelve a preguntar Es sueldo mayor a 600 y menor o igual a 1000?, si esto es cierto se calcula el 18% del sueldo y se le asigna a Renta. Puede haber casos en que ninguna pregunta se cumpla y por lo tanto no se ejecutan las sentencias.

Sentencia Switch-case
Esta sentencia, realice casi lo mismo que la sentencia IF, con la nica diferencia es que evala una expresin y dependiendo del resultado, se ejecuta el caso especificado. Su sintaxis es la siguiente: switch (expresin) { case valor1 : sentencias case break; case valor2 : sentencias case break; case valorN : sentencias case break; default : sentencias que cierto; break; }

valor1;

valor2;

valorN;

se ejecutan si ninguno de los casos resulta

Veamos algunos ejemplos: var idioma:String=Ingles; switch (idioma) { case "espaol" : trace("Bienvenido"); break; case "frances" : trace("Bienvenue"); break; default : trace("Wellcome"); } Este cdigo selecciona una variable llamada idioma y dependiendo de su valor (puede ser espaol, francs o ninguno de ellos), hace su publicacin en el panel salida. Para este cdigo, se ejecuta la opcin default, es decir trace(Wellcome); var Sueldo:Number=400; switch (true) { case (Sueldo<300): trace ("Renta 0"); break; case (Sueldo>=300 && Sueldo<600): trace ("Renta debe ser el 12 por ciento");

break; case (Sueldo>=600 && Sueldo<=1000): trace ("Renta debe ser el 18 por ciento"); break; default : trace ("Descontarle 30 por ciento"); } Este cdigo es ms elaborado y merece especial atencin, la expresin es un valor booleano (true) y los case son condiciones, a la primera condicin que devuelva el true, se ejecutar y saldr del switch. En este caso se ejecuta el segundo case. Todas estas sentencias se pueden utilizar anidadas, es decir se pueden hacer flujos de instruccin ms complejos. Consideremos un programa que de tres campos de texto (Introduccin de texto), se introduzcan nmeros y calcule cual de los tres es mayor y de paso nos diga el programa si ese nmero es par o impar. Programa 7 (Uso de Sentencias if-Else y Switch-Case) o Cree tres controles de Introduccin de texto y un botn en el fotograma 1 o Coloquele nombre a cada control de Num1, Num2 y Num3 respectivamente.

Crear un nuevo fotograma clave en 2, borrar esos controles y ah colocar un control de texto Dinmico.

En el fotograma 1 colocar el siguiente cdigo:

var cifra1:Number=0, cifra2:Number=0, cifra3:Number=0; Num1.border=Num2.border=Num3.border=true; Num1.background=Num2.background=Num3.background=true; Num1.backgroundColor Num2.backgroundColor=Num3.backgroundColor=0xFFFF00; stop(); o En botn colocar el siguiente cdigo on(release){ _root.cifra1=Number(_root.Num1.text); _root.cifra2=Number(_root.Num2.text); _root.cifra3=Number(_root.Num3.text); gotoAndPlay(2); } o En el fotograma 2 colocar el siguiente cdigo:
var mayor:Number=0; if(cifra1>cifra2){ if(cifra1>cifra3){ mayor=cifra1; } else{ mayor=cifra3; } } else { if(cifra2>cifra3){ mayor=cifra2; } else{ mayor=cifra3; } } switch(true){ case (mayor%2==0): resultado.text="El mayor es: "+mayor+" y es par";break; case (mayor%2==1): resultado.text="El mayor es: "+mayor+" y es impar";break; } stop();

Pruebe la pelcula.

Poco a poco realizamos cdigos ms complicados (apenas es el comienzo todava), en este cdigo cabe hacer una mencin especial sobre las lneas de cdigo del fotograma 1: Num1.border=Num2.border=Num3.border=true; Este cdigo realiza un operacin se asignacin hasta el momento no visto, revisemos de derecha a izquierda, a la propiedad Num3.border se le asigna el valor de true; a la propiedad Num2.border se le asigna el valor de Num3.border, pero como este ya es true, se le asigna true tambin; a la propiedad Num1.border se le asigna el valor de Num2.border, pero como este es igual Num3.border que a la vez es igual a true, entonces le asigna true tambin a Num1.border. La misma lgica se aplica a las otras de background y backgroundColor El desarrollo de sistemas implica el uso de lgica programacional, aqu se ha aplicado un sencillo algoritmo para investigar el nmero mayor de entre tres cifras, existen algoritmos ms complejos para ordenar una serie de nmeros pero esto se hace con otras herramientas.

Sentencia Bucle While-Do


Otra forma de flujo son las sentencias Bucle o Ciclos (Loops), estas ejecutan una sentencia tantas veces como se ordene, es decir, se realizan en operaciones que son repetitivas. La sentencia While es una sentencia que repetitiva, pero suele utilizar cuando no se sabe a ciencia exacta cuantas veces se van a ejecutar las instrucciones. Su sintaxis es la siguiente: while (condicin es cierta){ instrucciones a repetir; }

do { Instrucciones a repetir; } while (condicin es cierta); La diferencia entre el while y el Do While es que en while, si la condicin es cierta no se cumple a la primera vez, no entra, mientras que en el Do-While, la sentencia se ejecuta por lo menos una vez. Una situacin importante tambin es que para que las sentencias While funcionen estas deben de tener una instruccin contador, que vaya cambiando de alguna forma, para que la condicin es cierta se vaya actualizando, veamos el siguiente ejemplo: var i:Number=0; //Inicializa la variable I a 0

while(i<10){ //Mientas I sea menor que 10 trace(i); //imprime i i++; /aumenta i en 1, esta es instruccin contador } Este cdigo hace una operacin bsica en programacin (un clsico de la programacin estructurada), imprime los nmeros del 0 al 9, y lo hace de la siguiente forma: se inicializa la variable contador, en este caso i, posteriormente se realiza la pregunta es i menor que 10?, como esto es afirmativo, se imprime i y despus se ejecuta la instruccin contador que es i++, la instruccin while ordena que se vuelva a ejecutar la pregunta es i menor que 10? Ahora i vale 1 y se repite el ciclo, y no ser hasta que i valga 10 que la pregunta es i menor que 10? Se har falsa y se saldr del ciclo. Este funcionamiento base es el que se tendr en cuenta en los ciclos complejos. Ms ejemplos: var Suma:Number=0; //inicializa Suma var i=Number=1; //Inicializa I en 1 while(i<=10){ //Hacer mientras I sea menor que 10 Suma+=i; //Suma=Suma+I; i++; //contador } trace(Suma); //Imprime la Suma Cdigo que suma los nmeros del 1 al 10. var Factorial:Number=1; //inicializa factorial en 1 var i=1; var Limite=5; //Limite en 5 do{ Factorial*=i; //Factorial=Factorial*i i++; } while(i<=Limite); //Si i es menor que limite entonces regresar a do trace(Factorial); //Imprime Cdigo que calcula el factorial de la variable Limite, en este caso 5(120). var Palabra:String="Murcielago"; //Asignacin de una palabra var Encontrado:Boolean=false; //Encontrado se inicializa a false var letra:String="a"; //letra a buscar var i:Number=0; //variable contador // si Encontrado es igual a false e i es menor que el ancho de la palabra? while(Encontrado==false && i<=Palabra.length){ //es la letra en la posicin i de la palabra igual a letra if(Palabra.charAt(i)==letra){ Encontrado=true; //si es asi, Encontrado es igual a true y sale ciclo. } i++; }

if(Encontrado){ trace("la letra "+letra+" fue encontrada en la palabra "+Palabra); trace("En la posicion "+i); } else{ trace("la letra "+letra+" no fue encontrada en la palabra "+Palabra); } Hermoso cdigo que busca una letra la variable Palabra, y cuando la encuentra se sale del ciclo e imprime en qu posicin est la letra, sino la encuentra publica la letra no fue encontrada. Se invita al lector a analizar el cdigo.

Sentencia Bucle For


Una sentencia especializada en ciclos rgidos, pero de alto poder, su sintaxis es similar a sus lenguajes hermanos C++ y java. for (inicializar variable; condicin de fin; incremento variable){ hacemos estas acciones; } Para esta sentencia no necesitamos la variable contador, pero en cambio se le aplica el incremento variable, y la sentencia se est ejecutando mientras la condicin de fin sea verdadera. Por ejemplo: for(i=0;i<10, i++) Esta instruccin ejecutara el ciclo 10 veces (desde i=0, hasta i=9) for(i=0;i<=100,i+=2) Esta instruccin ejecutara el ciclo 50 veces (desde i=0, hasta i=100 pero con incrementos de dos en dos i+=2). for(i=100;i>0,i--) Esta instruccin ejecutara el ciclo 100 veces (desde i=100, hasta i=1 con decremento en i en 1; i--). Veamos algunos ejemplos de cdigo: var i:Number; for(i=1;i<=10;i++){ trace("hola Mundo"); } Cdigo que imprime Hola Mundo diez veces.

var i:Number; var limite:Number=5; var factorial:Number=1; for(i=1;i<=5;i++){ factorial*=i; } trace(factorial); Cdigo que calcula el factorial de limite

var i:Number; var anios:Number=1; var interes:Number=0.03; var Saldo:Number=200; for(i=1;i<=anios;i++){ Saldo+=Saldo*interes; } trace(Saldo); Cdigo que calcula el Saldo a favor despus de cierta cantidad de anios al tanto de inters anual

Bucles en Lneas de Tiempo


Ahora consideremos un hecho inherente en la vida: el movimiento no existe como tal, es tan solo una percepcin del ojo humano y la velocidad con la que el tiempo transcurre es tan solo un juego mental de nuestro cerebro, ahora bien, para que dicho engao se lleve a cabo se realiza un proceso repetitivo (es decir, un bucle) en el cual se van pasando fotos de nuestra vida cada cierto tiempo y esa secuencia causa la sensacin de movimiento. Bajo este concepto, el movimiento puede ser simulado en programacin en ActionScript utilizando las propiedades de los objetos y modificndolos con cdigo, para esto tenemos algunas herramientas ya a nuestra disposicin, ahora solo falta saber qu propiedades son las que podemos modificar de los objetos. Se considera un concepto trascendental en Flash, al referirse a movimiento no se habla estricta del movimiento rectilneo que se viene primero a la mente, con movimiento se refiere a modificacin de color, tamaa, transparencia, ejecucin, comportamiento, etc. Para poder comprender este tipo de animaciones veremos algunas propiedades presentes en casi todos los controles de flash (por lo menos los MovieClips y los botones)

_x _y _xscal

Propiedad que establece la locacin en coordenada x del objeto. Propiedad que establece la locacin en coordenada y del objeto. Propiedad que establece la escala en ancho con proporcin 1:1

e _yscal e _alph a

del objeto Propiedad que establece la escala en alto con proporcin 1:1 en y Propiedad que establece el color alfa del objeto, tomando en consideracin que alfa=0 es transparencia y alfa=100 es el color normal del objeto.

Tcnicamente hablando son propiedades internas de los objetos y no se necesita declararlas, ya que estas implcitas al dibujar los objetos. Programa 8: Movimiento rectilneo primitivo con Bucle en lnea de tiempo

Cree un MovieClip de un avin (el movieClip puede ir animado, pero no con movimiento rectilneo) Coloquele nombre al MovieClip: avin De clic al fotograma1 y digite lo siguiente:

avion._x=50; //Colocando el MovieClip en la coordenada 50,200 avion._y=200; Cree un nuevo fotograma clave en 2 y digite lo siguiente avion._x++; //Movimiento rectilneo en x Cree un nuevo fotograma clave en 3 y digite lo siguiente gotoAndPlay(2); //Bucle

La pelcula es un bucle infinito que empieza en el fotograma 1, posterior el fotograma 2, despus el fotograma 3, pero despus se regresa al fotograma 2, y este se va al 3 y as queda sucesivamente, en lo que este ciclo transcurre la variable avion._x va incrementndose en uno por lo que se ve el efecto del movimiento rectilneo. Ahora bien, se pueden hacer

bucles finitos en las pelculas tambin, simplemente controlando una variable. Veamos el siguiente programa: Programa 9: Transformacin Alfa con Bucle en lnea de tiempo o Cree una pelcula e inserte un MovieClip en forma de estrella, y colquele el nombre al MovieClip de estrella_mc.

En el fotograma1 escriba el siguiente cdigo: var transparencia:Number=100; //Inicializa la transparencia a 100 var ciclo:Number=1; //ciclo 1 es subida de transparencia, ciclo 2 bajada var vez:Number=0; //No de veces que se ejecutar el ciclo de transparencia

Cree un fotograma2 clave y escriba el siguiente cdigo:

//un bucle de la animacin es considerado dos ciclos, ciclo 1 en donde la // propiedad alfa va disminuyendo, y el ciclo 2 donde la propiedad alfa esta en //aumento. if(ciclo==1){ estrella_mc._alpha=transparencia; transparencia-=10; } else{ estrella_mc._alpha=transparencia; transparencia+=10; }

//Para saber el cambio de ciclo, los limites del valor transparencia lo dicen: //si la transparencia es 0, el ciclo 2 empieza, si es 100, es el ciclo 1 y la variable //vez aumenta en 1 if(transparencia==0){ ciclo=2; } if(transparencia==100){ ciclo=1; vez++; } o Cree un fotograma3 clave y escriba lo siguiente: //Si la variable vez es 3 la pelcula se detiene, sino sigue con el ciclo. if(vez==3){ stop(); } else{ gotoAndPlay(2); } Este programa explica cmo se pueden controlar los bucles a travs de la programacin, para este caso, la suma de los ciclos 1 y 2 es de 19 bucles multiplicada por las tres veces que se ejecuta, en total 57 vueltas hizo el programa para que la animacin se llevara a cabo. Sin embargo, existe un inconveniente con este tipo de animaciones: Monopolizan la lnea de tiempo principal y virtualmente se hace difcil animar otra cosa que este en dichos fotogramas, es por ello que la cnones de programacin indican que estas animaciones hay que meterlas en lneas de tiempo secundarias, es decir MovieClips, como se ver ms adelante, este problema se soluciona creando MovieClip en tiempo de ejecucin.

EJERCICIOS DEL CAPITULO III


Ejercicio1: Realice un programa en ActionScript que dados tres notas introducidas a travs de controles de Introduccin de texto, calcule el promedio y lo despliegue en una caja de texto Dinamica, y a la vez diga si aprob o reprob consideran que con un promedio mayor o igual a 7 lo aprueba. Ejercicio2: Realice un programa en ActionScript que contenga un control de Introduccin de texto, ah se puedan digitar nmeros del 1 al 5 y al presionar un botn lleve a la escena 1 si en el cuadro de texto esta digitado 1, lleve a la escena 2 si el cuadro de texto est digitado 2 y asi sucesivamente y lleve a una escena especial si el usuario digit cualquier cosa. (consejo: con sentencia switch)

Ejercicio3: Realice un programa en ActionScript que contenga dos controles de introduccin de texto, en uno se escriba una palabra, y en el otro una letra. Cuando se oprima un botn, en un cuadro de texto dinmico se visualice si fue encontrada la letra en la palabra y si esto es as, en qu posicin lo encontr, de lo contrario que coloque que el texto no fue encontrado.

Ejercicio4: Realice un programa que simule un choque de partculas, el choque puede ir en lnea recta para simplificar clculos y tiene que darse una vez.

CAPITULO IV: ARRAYS

Cuando se toc el captulo de variables, hubo un tipo de variables que no se mostr en su momento ya que su manejo requiere de ms que

simples instrucciones secuenciales, ahora que ya vimos los bucles estamos listos para manejar arrays. Los arrays no son ms que datos que se componen de una tira de datos, es decir un array es una matriz que puede tener muchos datos, es un objeto y por lo tanto tiene propiedades y mtodos, y por tener multiples datos, es una forma de organizar informacin de una manera eficiente. Las aplicaciones son verstiles y en un tema avanzado se ver como dichos arrays sirven de plataforma genrica para contener base de datos.

Declaracin de Arrays
La sintaxis para declara arrays: var miArray=new Array(); y para asignar valores: var miArray:Array=[valor1, valor2, valor3, , valorN]; para invocar a un elemento del array: trace(miArray[0]); Los elementos van listados desde la posicin 0 hasta la posicin N, esto significa que trabajan muy parecidos a los String, de hecho tcnicamente hablando un tipo de variable es un tipo de array primitivo. var nombres:Array=["juan","pedro","maria"]; trace(nombres[1]); Este cdigo declara un array llamado nombres y le asigna los valores de juan, pedro y mara. La instruccin trace publica a pedro, ya que se encuentra en la posicin 1. Tambin se pueden asignar los valores despus de declarada la variable: var Sueldos=new Array(); //Declaracin de variable array Sueldos[0]=250; //elemento 0 Sueldos[1]=500; //elemento 1 Sueldos[2]=450; //elemento 2 trace(Sueldos[1]); //impresin del elemento 1 Tambin se pueden recorrer los elementos de un array con un simple bucle. var Sueldos=Array=[100,200,300,400] var i:Number; for(i=0;i<Sueldos.length;i++){ trace(Sueldos[i]); }

A los arrays tambin se le pueden asignar nombres a las posiciones, aunque es un proceso ms tardo y complicado, suele ser mas organizado si un array no es demasiado extenso. Para poder asignarle nombres a las posiciones: Array[NombreElemento]=valorExpresion

Por ejemplo: var Datos=new Array(); Datos["Nombre"]="Victor Manuel"; Datos["Edad"]=21; Datos["Ciudad"]="San Salvador"; trace(Datos["Nombre"]);

Bucle For-in para arrays


Uno de los bucles que no se haba tocado por razones obvias era un bucle que va orientado a recorrer las propiedades de un objeto, y se puede utilizar para recorrer los elementos de un array, cuando estos tienen un nombre en sus posiciones, la sintaxis general es: for (var posicion in MiObjeto) { } Donde var posicin es una declaracin de variable donde posicin ser en cada ejecucin del bucle un nombre de la posicin del array. MiObjeto es el array correspondiente Por ejemplo se podra trazar los datos del array del ejercicio anterior: var Datos=new Array(); Datos["Nombre"]="Victor Manuel"; Datos["Edad"]=21; Datos["Ciudad"]="San Salvador"; for(var prop in Datos){ trace(Datos[prop]); } la variable prop en este caso es la variable que se utiliza en lugar de los nombres de posicin del array. La siguiente tabla muestra algunos propiedades y mtodos de los arrays: pop() shift() Elimina el ltimo elemento de una matriz y devuelve el valor de dicho elemento Elimina el primer elemento de una matriz y devuelve dicho

elemento. slice(star,e nd) Devuelve una matriz nueva que consta de un rango de elementos de la matriz original sin modificar la matriz original.

Programa 10: Utilizacin de un Array Crearemos un programa dinmico que aparentar tener una base de datos en tiempo de ejecucin: o Cree una pelcula Flash que contenga dos cuadros de Introduccin de texto y dos botones de la siguiente forma:

Coloquele a los cuadros de Introduccin de texto, los nombres de Nombre_txt y Edad_txt respectivamente. En el fotograma1 digite el siguiente cdigo:

var MisNombres=new Array(); //Nuevo Array de Nombres var MisEdades=new Array(); //Nuevo Array de Edades var contador=0; //Variable que ira conteniendos cuantos datos son agregados stop(); o En el botn con rotulo INTRODUCIR, digite el siguiente cdigo: on (release) { if (_root.Nombre_txt.text != "" && _root.Edad_txt.text != "") { _root.MisNombres[contador] = _root.Nombre_txt.text; _root.MisEdades[contador] = _root.Edad_txt.text; contador++; _root.Nombre_txt.text = ""; _root.Edad_txt.text = ""; } } Explicando el cdigo

Se crea una condicin IF, preguntando si ambos controles de introduccin de texto no estn vacos, si lo estn el botn no ejecuta nada. Si no estn vacos, se agrega un nuevo dato a los arrays dados por sus respectivos controles de Introduccin de texto. Contador se incrementa en 1 Los controles Nombre_txt y Edad_txt son puestos en blanco nuevamente.

Ahora en el botn VER DATOS, digite lo siguiente:

on(release){ var i:Number=0; for(i=0; i<contador; i++){ trace(_root.MisNombres[i]); trace(_root.MisEdades[i]); } } Se realiza un recorrido de los dos arrays, para poder desplegar en salida los datos hasta ahorita insertados.

EJERCICIOS DEL CAPITULO IV


Ejercicio1: Realice un programa en ActionScript que cree un Array almacenando diez nombres de pases, y haga una animacin (con ActionScript) que recorra todos los elementos del array con un cuadro de texto dinmico.

CAPITULO V: FUNCIONES

Utilizar funciones, es la parte medular de todo programa bien estructurado, las funciones nos permite re-utilizar cdigo y hace los programas mejor diseados, ms elegantes y ms fciles de entender. Y es que bsicamente los eventos (se vern ms adelante) en ActionScript son manejados y manipulados por funciones; Comprender el funcionamiento de las funciones, es estar a las puertas de los objetos y clases en ActionScript y por lo tanto, es estar en los ltimos peldaos del conocimiento del lenguaje.

Terminologa y Sintaxis
Declaracin de una Funcin: La funcin se crea para su posterior invocacin en el programa ActionScript Invocacin de una Funcin: A este proceso se le llama Call y es para utilizar la funcin y que nos devuelva un dato o ninguno. Parmetros de la Funcin: Variables de todo tipo que recibe la funcin para procesarlos y realizar algn procedimiento particular, los parmetros se pueden pasar por valor y por referencia. Para poder Declarar una funcin, es decir, crearla, se utiliza la siguiente sintaxis: function NombreFuncion(parametro1, parametro2, parametroN){ Sentencias de la funcin; Return(valorTipo); } Esta sintaxis se explica a continuacin function: Instruccin que indica que se va a crear una funcin. NombreFuncion: Nombre de la funcin que le asignamos. parmetros: Son variables (de cualquier tipo) que son pasados a

la funcin para su posterior procesamiento. return: es una instruccin ActionScript que indica que la funcin va retornar algo, si est vaca, no retorna nada, si contiene un valor, devuelve el valor que puede ser de cualquier tipo de dato

Por ejemplo: var i:Number=0 //Declaracin de una variable i //Se crea una funcin sencilla que lo nico que hace es imprimir un mensaje function Impresion(){ trace("Mi Primera Funcin"); } //En el siguiente bucle, la funcin se invoca 3 veces for(i=0;i<3;i++){ Impresion(); //Se invoca a la funcin }

Uso de Parmetros
El uso de parmetros es fundamental en el uso de las funciones, los parmetros son copias internas de datos que se le pasan a la funcin y dicha funcin utiliza estas copias para trabajar con ellas. var mensaje:String="Hola a todos"; function ImprimirMensaje(msj){ trace("El mensaje pasado es: "+msj); } ImprimirMensaje(mensaje); ImprimirMensaje("Carlos"); En este cdigo, se declara la funcin ImprimirMensaje que recibe un parametro llamado msj, cuando la funcin es invocada, se le pasa una variable, en el caso de la primera invocacin, se le pasa la variable mensaje, y en el segundo se le pasa el String Carlos var Num1:Number=3; function ImprimeCuadrado(numero){ trace(numero*numero); } ImprimeCuadrado(Num1); Este cdigo declara una funcin llamada ImprimeCuadrado que tiene un parmetro llamado numero e imprime el cuadrado del nmero. En la lnea final del cdigo se Imprime el cuadrado de la variable pasada a la funcin Num1. var es:Boolean=true; function ImprimeV(escierto){ if(escierto){ trace("el parametro es verdadero");

} else{ trace("el parametro no era verdadero"); } } ImprimeV(es); ImprimeV(5==6); El cdigo es interesante en el uso de un parmetro booleano, se declara una funcin ImprimeV que tiene un parmetro que se trabajar como booleano, si el booleano es true, se imprime el parmetro es verdadero si no se imprime el parmetro no era verdadero, note las ltimas dos lneas: en la primera se pasa la variable es que es verdadera y en la segunda se pasa una condicin que es false; pruebe la ejecucin de este programa. El siguiente programa detalla que no solo tipos de valor bsico se pueden pasar como parmetros. Programa 11: Parmetros de MovieClip o Cree una pelcula que contenga tres MovieClips y asgnele los nombres de movie1, movie2 y movie3 respectivamente.

En el fotograma1 digite el siguiente cdigo:

//Declaracion de una funcin que tiene como parmetros un MovieClip, un valor alfa y // un Tamano que aumentara la escala. function EstadoMovie(Clip, Alfa, Tamano){ Clip._alpha=Alfa; Clip._xscale+=Tamano; Clip._yscale+=Tamano; } //se invoca la funcin y se pasa el parmetro movie1 y valores para alfa y tamano EstadoMovie(movie1, 30, 100); //se invoca la funcin y se pasa el parmetro movie2 y valor alfa 60 y tamao=50 EstadoMovie(movie2, 60, 50); EstadoMovie(movie3, 100, 0); stop(); o Pruebe el Resultado:

Este se podra decir que es un ejemplo del potencial que tiene el ActionScript, la funcin puede recibir como parmetro un objeto y trabajar sobre dicho objeto, como la funcin es cdigo re-utilizable, se puede utilizar con los objetos que se quiera.

Declaracin return
Hasta el momento se han visto funciones que no retornan valores, sin embargo la funcionalidad de las funciones (valga la redundancia) se extiende si estas funciones retornaran valores. La declaracin return hace que la funcin devuelva al cdigo que lo invoc un valor, este puede ser de cualquier tipo. Ejemplo: var numletra1:String, numletra2:String; function ConvierteLetra(numero){ var letra:String; switch(numero){ case 0: letra="cero";break; case 1: letra="uno";break; case 2: letra="dos";break; case 3: letra="tres";break; case 4: letra="cuatro";break; case 5: letra="cinco";break; case 6: letra="seis";break; case 7: letra="siete";break; case 8: letra="ocho";break; case 9: letra="nueve";break; default: letra="No definido";break; } return(letra); } numletra1=ConvierteLetra(5); numletra2=ConvierteLetra(2); trace(numletra1); trace(numletra2); Analizando el cdigo anterior, se declara una funcin con nombre ConvierteLetra y tiene como parmetro a numero, las sentencias de la funcin realizan lo siguiente: Si numero es un numero entre 0 y 9 la variable letra (declarada dentro de la funcin) toma el valor String del nmero respectivo. La instruccin return(letra) hace que la funcin

devuelva un valor de tipo String (porque letra lo es). Y eso queda demostrado cuando a las variables String numLetra1 y numLetra2 se le asigna el valor de la funcin que devuelve con sus parmetros respectivos (5 y 2). Otro ejemplo: var num1:Number=2, num2:Number=6; function cuadrado(numero){ return(numero*numero); } trace("esta variable es "+num1+" y su cuadrado es: "+cuadrado(num1)); trace("esta variable es "+num2+" y su cuadrado es: "+cuadrado(num2)); En el cdigo anterior, se utiliza la el return de la funcin, pero no para asignrselo a una variable sino mas bien para utilizarlo en una sentencia.

Programa 12: Uso de Return o Cree una pelcula en Flash que contenga dos cuadros de Introduccin de texto, un botn y un cuadro de Texto Dinmico.

A los cuadros de Introduccin de texto asgnele los nombres de horas_txt y pagoh_txt respectivamente. Al cuadro de texto dinmico asgnele el nombre de ex_txt En el fotograma1 digite el siguiente cdigo:

o o

function GenerarExpresion(horas, pagoh){ var expresion:String; expresion="Por "+horas+" trabajadas";

expresion+=" pagar "+Number(horas)*Number(pagoh)+" dolares"; return(expresion); } stop(); o En el botn digitar el siguiente cdigo: on(release){ _root.ex_txt.text=_root.GenerarExpresion(_root.horas_txt.text, _root.pagoh_txt.text); } o Pruebe la pelcula. Note en este programa, como se invoca la funcin desde el botn, siempre anteponindole el nombre del objeto madre en donde se cre.

Parametros por valor y referencia


Existe una forma en Flash de obligar al compilador a que una funcin reciba como parmetros ciertos tipos de datos y devuelva ciertos tipos de datos, es decir, hasta el momento se han visto como las funciones tienen un parmetro, pero virtualmente este parmetro puede recibir cualquier tipo de variable (cuando no debera de ser asi), para ello podemos indicarle al compilador que tipo de datos tiene que recibir ese parmetro de la funcin. Su sintaxis es la siguiente: function nombreFuncion(parmetro:TipoDato) Esta instruccin indica que el parmetro que tiene la funcin recibir solo datos del Tipo de dato respectivo. Ejemplo: function Cuadrado(numero:Number) Obligado a pasar como parmetro un numero. function Mensaje(msj:String, numero:Number) Obligado a pasar como parmetros un String y un nmero. Tambin se puede obligar a la funcin a que retorne un Tipo de dato determinado, con esto se eliminan especulaciones sobre que tipo de dato debe retornar la funcin. Su sintaxis: Funciont nombreFuncion(parmetro:TipoDato):TipoDato

Aqu se obliga a la funcin a retornar un TipoDato, es decir, la instruccin return debe contener un dato igual al tipo de Dato que la funcin fue declarada a retornar. Ejemplo: function Cuadrado(numero:Number):Number Aqu la funcin Cuadrado recibe como parmetro un numero y deber retornar un tipo de datos Number. function esMayor(num1:Number):Boolean La funcin esMayor recibe como parmetro un nmero y tiene que devolver al cdigo que la invoca un tipo de dato booleano. Este tipo de instruccin hace que el cdigo sea ms estricto y por lo tanto limita los errores lgicos que se puedan dar en un programa ActionScript. var num1:Number=2; //Declarando variables var cadena:String="mensaje"; //la funcin cuadrado tiene que devolver un nmero function cuadrado(n:Number):Number{ return(n*n); } num1=cuadrado(num1); //asignacin del cuadrado de num1 a num1 cadena=cuadrado(num1); //Error!, intentando dar un numero a la variable cadena El cdigo creara un error en la ltima lnea ya que se le est tratando de dar un tipo de dato nmero a un variable String (cadena). Esto sirve tambin para comprender un aspecto importante de las funciones, las variables o valores que se le pasan a los parmetros de una funcin se pasan usualmente por valor cuando estos son tipos de datos simples, es decir, cuando se pasa la variable num1 a la funcin cuadrado esta no se modifica dentro de la funcin, lo que se ha hecho es que se le pasa un valor copiado y este valor copiado (n) es el que trabaja la funcin; por supuesto, despus se le asigna el valor retornado nuevamente a num1, pero eso es otra cosa. var Renta:Number=0, Sueldo:Number=200; function calculoRenta(s:Number):Number{ s=s+10; return(s*0.1); } Renta=calculoRenta(Sueldo); En este cdigo la variable Sueldo no es afectada al pasarla a la funcin, Sueldo sigue valiendo 200, aunque dentro de la funcin se le aumentaron 10 unidades. Esto significa que a quien se le aumento 10 unidades es al parmetro s que es una copia de Sueldo, pero no Sueldo propiamente dicho. A este fenmeno se le conoce como paso por valor

Pero como se haba dicho anterior, esto funciona con Tipos de datos simples, es decir con Nmeros, String y Booleanos. Ahora consideremos el paso de un Array: //Declaracin de variables var Paises=new Array(); var i:Number=0; //Asignacin de valores a la matriz Paises[0]="El Salvador"; Paises[1]="Mexico"; Paises[2]="Colombia"; //Imprime en el panel de Salida los diferentes elementos del array for(i=0;i<Paises.length;i++){ trace(Paises[i]); } // Se declara una funcin de borrado que recibe como parmetro un array function Borrado(vector:Array){ var i:Number; for(i=0;i<vector.length;i++){ vector[i]="Nada"; } } //Se le pasa el Array Paises a la funcion Borrado(Paises); //Se vuelve a imprimir en el panel de Salida for(i=0;i<Paises.length;i++){ trace(Paises[i]); } Y el resultado en el panel de Salida: El Salvador Mexico Colombia Nada Nada Nada Aqu ha ocurrido un fenmeno interesante, el array fue pasado a la funcin, y aunque debera de entenderse que fue la copia (vector) la que fue modificada, tambin se modific la original, es decir Paises, esto se debe a que los Arrays, MovieClips,etc, en fin todos los tipos de datos complejos (Objetos) cuando son pasados a una funcin no se les pasa por valor, sino: por referencia. El paso por referencia es que no se pasa el valor de la variable sino su ubicacin en memoria, el pasar un variable por su ubicacin de memoria significa que la variable va a ser modificada a todo nivel. El paso por referencia debe ser un proceso que debe de tenerse mucho tacto al utilizar, una forma de evadirlo podra ser crear otra copia dentro de la

funcin (es decir, una copia de la copia) y trabajar esta ltima si nuestra intencin no es modificar la original. Cuando se desarrolle el tema de Clases, se podr ver de una vez por todas, que los objetos son direcciones de memoria que alojan variables de todo tipo.

EJERCICIOS DEL CAPITULO V


Ejercicio1: Realice un programa en ActionScript que cree una funcin que ordene los elementos de un array, es decir, si el array es [3, 7, 8, 2, 4], la funcin ordene el array como [2, 3, 4, 7, 8] Ejercicio2: Realice una animacin con un MovieClip pero el movimiento esta vez controlado por una funcin mover(Clip, posicionX, posicionY). Ejercicio3: Realice una funcin en ActioScript que recibe tres parmetros Numero, y devuelva el nmero mayor de ellos tres. function Mayor(n1:Number, n2:Number, n3:Number):Number Ejercico4: Cree una funcin en ActionScript que devuelva un booleano afirmando si un numero es primo o no. function esPrimo(n1:Number):Boolean

CAPITULO VI: EVENTOS


Hablar de Eventos es adentrarnos al fascinante mundo de las animaciones complejas en ActionScript, y es que casi no hay nada que se pueda animar en ActionScript que no sea con eventos, hasta el presente se ha visto una muestra del evento on(release) del botn, indirectamente se ha utilizado otro evento: el evento que se ejecuta cuando el cabezal toca un fotograma de la lnea de tiempo principal.

Hoy en da los eventos son controlados por funciones propietarias, y esto hace aparentemente el cdigo ms complejo, aunque tambin ms ordenado. Sin embargo Existen tres eventos primarios (primigenios) que no necesitan funciones y que estn presente desde los albores de la programacin ActionScript, para poder comprender el uso de funciones propietarias hacia los eventos, se debe comprender primero el uso de estos eventos. Pero antes que nada:Qu es un evento? Evento: es un trozo de cdigo ActionScript que se ejecuta cuando pasa algo en la pelcula, este puede activarse por eventos del usuario o eventos inducidos por el programa. En la vida cotidiana, nuestro mundo est plagado de eventos, si ocurre el evento de pinchar un Globo, automticamente propiedades de ese globo cambian, y el globo se desinfla (mtodo). Aunque el apartado de Objetos con sus propiedades, mtodos y Eventos se vern en un futuro, es imposible tocar el potencial de ActionScript sin poder saborear un poco los eventos antes.

Eventos Primigenios
Para los objetos bsicos en Flash, son tres: On Evento cuando se hace algo sobre el botn onClipEvent Evento cuando algo pasa sobre el movieClip onEnterFrame Evento cuando el cabezal toca un fotograma en lnea de tiempo principal. Realmente el onEnterFrame de la lnea de tiempo principal es un objeto con funcin literal como se ver ms adelante, pero por el momento no necesitamos complicarnos con dichos trminos.

Evento on El cdigo de este evento debe ir en un botn y su sintaxis es la siguiente: on(suceso){ instrucciones; } Donde suceso es el tipo de accin que se realiza sobre el botn, la siguiente tabla muestra algunos de los sucesos ms importantes: release press Se presiona el botn y suelta. Se presiona el botn

rollOver rollOut keyPress Key

El puntero del ratn se mueve sobre el botn El puntero del ratn se mueve afuera del botn Se presiona una tecla y se especifica qu tecla es (Key)

La forma de invocar otros objetos dentro del evento es la misma que se ha venido utilizando, sin embargo, es hora de introducir algo nuevo: Referencias Absolutas y relativas Ya sea dentro de una funcin o dentro de un evento, la forma de llamar de objetos, hasta el momento se han utilizado referencias absolutas veamos ambos conceptos: Referencia Absoluta: es el nombre completo de un objeto, si dicho objeto est dentro de otros objetos, se le anteponen los objetos al cual pertenecen desde su objeto madre. _root.ObjetoPadre.Objeto,propiedad Referencia Relativa: es el nombre de un objeto relativo al objeto en donde se est invocando, si dicho objeto est en su mismo cdigo, se le da el apodo de this. Si se quiere invocar un objeto que est fuera de l, pero est en el objetoMadre al cual pertenece se utiliza la sentencia parent this._parent.Objeto.propiedad Consideremos el siguiente ejercicio:

Programa 13: Utilizacin del evento on y referencias absultas y relativas o Cree una pelcula Flash con un botn y un MovieClip, al MovieClip colquele el nombre de bomba_mc.

En el botn digite el siguiente cdigo:

on(keyPress "<Down>"){ _root.bomba_mc._y+=1; //invocando al MovieClip y aumentando su posicionY } o En el fotograma1 digite lo siguiente: stop(); o Pruebe la pelcula. El evento solo se activa cuando se presiona la tecla cursora abajo y cada vez que se presiona el MovieClip aumenta su coordenada en Y, lo que dar la sensacin de ir cayendo. Note la referencia absoluta para invocar el nombre del MovieClip en el evento del botn. Se puede llamar al MovieClip con su referencia relativa de la siguiente forma: on(keyPress "<Down>"){ this.bomba_mc._y+=1; } Aqu el objeto this es el objeto madre, es decir, root.

Pueden llegarse casos en que puede resultar un problema estar llamando referencias relativas o absolutas a un objeto, para ello existe un

botn que llama los objetos dibujados en la pelcula y se puede elegir entre llamarlo por cualquier forma:

Al presionar el botn de generador de rutas aparecer la siguiente ventana:

Y en modalidad diseo se podr escoger la ruta respectiva ya sea Relativa o Absoluta. Evento onClipEvent MovieClip tiene el evento onClipEvent, este se activa cuando un suceso ocurre sobre el MovieClip, su sintaxis es la siguiente: onClipEvent(sucesos) { instrucciones; } Y los sucesos que pueden darse son: Load unLoad enterFrame MouseDow n MouseMove Se ejecuta cuando el MovieClip entra en el escenario principal. Se ejecuta cuando el MoviClip deja de estar en el escenario principal Se ejecuta cada vez que el MovieClip entra en un fotograma de la lnea de tiempo principal. Se ejecuta cuando se presiona el clic izquierdo del raton.

Se ejecuta cuando se mueve el puntero del ratn sobre el MovieClip Para este nivel el ms utilizado es el suceso enterFrame, ejemplo: onClipEvent(enterframe){ this._x+=1; } Este cdigo hace que el MovieClip se mueva en el eje x

onClipEvent(mousemove){ this._x+=1; } Este otro cdigo hace que el MovieClip se mueva en el eje x siempre y cuando se est moviendo el puntero de Mouse.

Programa14: Uso del evento onClipEvent El programa que a continuacin se detalla, hace un efecto de rebote de una bola dentro de un rectngulo definido, es importante hacer notar que este efecto se puede lograr con otras herramientas de cdigo, pero nuestra intencin es demostrar cmo se usa el evento onClipEvent. Convenciones sobre el efecto rebote: El programar un efecto rebote conlleva desarrollar cierta lgica espacial, en el sentido estricto, cuando un objeto rebota invierte su direccin, la direccin usualmente lleva un ngulo, pero para este caso el ngulo se estacionar en 45, otra cosa importante es el hecho que si invierte su direccin significa que cuando llegue al borde, si este es vertical, entonces la coordenada x que iba aumentando, disminuir o viceversa; la misma lgica se aplica al rebote horizontal pero a la coordenada y. o Dibuje un rectngulo tal y como se muestra a continuacin, pero teniendo en cuenta que las esquinas deben de tener las coordenada siguientes: Esquina Superior izquierda: Esquina Superior derecha: 50,50 450,50

Esquina Inferior derecha: 450,300 Esquina Inferior izquierda: 50,300

Auxliese de la regla de Flash y del inspector de propiedades.

Esto significa que el cuadrante debe tener un ancho de 400 pixeles y un alto de 250, y su posicin (50,50).

Ahora cree un MovieClip en forma de bola y que tenga un ancho de 20 pixeles y un alto de 20 pixeles tambin, y colquelo en la coordenada 100,100

De clic en el fotograma1 y digite el siguiente cdigo:

var incrementox:Number=1; //Avance en X positivo var incrementoy:Number=1; //Avance en Y positivo stop(); o Ahora de clic en el MovieClip y digite el siguiente cdigo:

onClipEvent(enterFrame){ //la pelota se mueve: this._x+=_root.incrementox; this._y+=_root.incrementoy; // Si la bola llega al borde derecho el valor del incremento x es positivo if(this._x==50){ _root.incrementox=1;

} // Si la bola llega al borde izquierdo el valor del incremento x es negativo // el borde esta en 450, pero por el dimetro del baln (20) se resta. if(this._x==430){ _root.incrementox=-1; } //Si la bolla llega al borde superior el valor del incremento y es positivo if(this._y==50){ _root.incrementoy=1; } //si la bola llega al borde inferior el valor del incremento y es negativo //es 280 porque se resta el borde inferior(300) y el alto del baln 20. if(this._y==280){ _root.incrementoy=-1; } } Analice el cdigo. El enterFrame se ver con las funciones literales.

Los Gestores de Eventos y las funciones Literales


En lenguajes orientados a objetos como ActionScript, existen trminos como propiedades, mtodos y Eventos, los eventos como ya dijimos son porciones de cdigo que se ejecutan cuando un evento ocurre, dichos eventos los activa el usuario o el sistema. Ya que los eventos son cdigos que pueden ejecutarse muchas veces, el ActionScript 2.0 incorpor el concepto de funciones propietarias o Literales. Funciones literales: son funciones cualquieras, pero que se le asignan a los eventos en ActionScript. La ventaja de utilizar funciones literales es que se le puede asignar la misma funcin a diferentes eventos inclusive de diferentes objetos. function NombreFuncion(){ Insrucciones; } Objeto.NombreEvento=NombreFuncion; Cdigo de sintaxis que explica cmo funciona el procedimiento de la funcin literal. Sin embargo tambin puede crearse la funcin literal sin nombre y asignrsela de una sola vez al evento: Objeto.NombreEvento= function(){ Insrucciones; }

Lo que basta es saber qu eventos son los que tiene a su disposicin los objetos. Estamos listos para entrar al potencial del ActionScript

Objetos _root y lneas de tiempo (MovieClips)


Hasta el momento se ha utilizado el objeto Madre _root, pero ahora se ver ms a detalle qu propiedades, mtodos y eventos tiene. Hay que tomar en cuenta que es el objeto raz de lnea de tiempo, esto significa que no es el nico objeto raz, ya que existen otros objetos, pero no son propios de la jerarqua de objetos. Tambin hay que decir que _root por ser un objeto tipo lnea de tiempo, tiene casi las mismas propiedades, mtodos y eventos de lneas de tiempo. Algunas de ellas se detallan a continuacin:

Propiedades
_alpha _currentframe _framesloaded _height _width _visible _rotation _xmouse _ymouse createTextField duplicateMovieC lip createEmptyMov ieClip getBytesLoaded getBytesTotal Play Stop onEnterFrame La transparencia del objeto Numero de fotograma actual, es decir, en donde est el cabeza. Cantidad de fotogramas cargados. Altura del objeto Anchura del objeto Propiedad booleana que establece si est visible o no el objeto. Valor en grados de rotacin del objeto. Posicin x del puntero del ratn Posicin y del puntero del ratn

Mtodos
Crea un campo de texto Duplica un MovieClip ya creado Crea un MovieClip vaco Devuelve la cantidad de Bytes cargados Devuelve la cantidad total de Bytes que pesa la pelcula Pone en marcha el cabezal Detiene el cabezal

Eventos
Cuando se entra a un fotograma a la velocidad de la pelcula onMouseDown Se da clic con el ratn onMouseMove Se mueve el puntero del ratn onPress Se presiona sobre el objeto onRelease Se suelta el ratn sobre el objeto onRollOut Se mueve afuera el puntero del ratn del objeto onRollOver Se mueve el ratn sobre el objeto onKeyDown Se presiona una tecla Ahora existen propiedades y mtodos para aplicarlos a los eventos con funciones literales.

Programa 15: Funcin literal con animacin alfa aplicados a MovieClips Aunque este ejercicio puede hacerse con el evento primigenio onClipEvent(enterFrame), resulta ms eficiente con una funcin literal. La ventaja radica en que se realiza el cdigo una tan sola vez y posteriormente se le aplica la funcin literal a cada evento de los MovieClips. o Cree una pelcula con tres MovieClips insertados, asgnele los nombres de clip1_mc, clip2_mc y clip3_mc respectivamente.

De clic en el fotograma1 y digite lo siguiente:

//funcin literal que hace que un objeto this reduzca su alfa en 5. function AnimarAlfa(){ this._alpha-=5; } //se le asigna la funcin AnimarAlfa a los eventos onEnterFrame de cada MovieClip clip1_mc.onEnterFrame=AnimarAlfa; clip2_mc.onEnterFrame=AnimarAlfa; clip3_mc.onEnterFrame=AnimarAlfa; stop(); o Pruebe la pelcula. Ay puntos bien importantes a mencionar antes de continuar: Este cdigo pudo haberse hecho con el evento primigenio onClipEvent, pero el cdigo de la funcin AnimarAlfa se tuvo que haber colocado en cada MovieClip, es decir, tres veces.

Al evento onEnterFrame (que en este cdigo se utiliza como si fuera propiedad) se le asigna la funcin AnimarAlfa. this se utiliza porque la funcin AnimarAlfa no sabr a quien o quienes va servir, por lo tanto se limita a decir: Reduzco el alfa en 5 del objeto que me pasen.

Programa 16: Animacin de un objeto de Texto Dinmico creado en ejecucin Para poder realizar este programa se createTextField y la propiedad _currentframe. Sintaxis de la funcin createTextField createTextField(Nombre:String, Profundidad:Number, x:Number, y:Number, width:Number, height:Number) : TextField Nombre: Es el nombre del cuadro de texto creado por programacin Profundidad: Es un numero identificador nico para el cuadro de texto x: coordenada x de posicin del cuadro de texto y: coordenada y de posicin del cuadro de texto width: ancho en pixeles del cuadro de texto height: alto en pixeles del cuadro de texto utilizar la funcin

Cree una pelcula y en el fotograma1 inserte el siguiente cdigo:

//Crea un campo de texto en la lnea de tiempo principal _root.createTextField("foto_txt",1,100,100,200,100); //Funcin literal asignada al evento onEnterFrame de la lnea de tiempo principal _root.onEnterFrame=function(){ _root.foto_txt.text=_root._currentframe; } La primera lnea de instruccin crea un campo de texto con nombre foto_txt, le asigna el cdigo 1 y lo coloca en la posicin 100,100 en la pelcula, dndole un ancho de 200 pixeles y un alto de 100 pixeles. o De clic en el fotograma 50 y presione F5, para crear una animacin de 50 fotogramas, pero el nico fotograma clave en

la animacin ser el fotograma1, es decir, el que contiene el cdigo. o Pruebe la pelcula.

Programa 17: Uso de duplicateMovieClip y _root Para este programa se utilizar el mtodo duplcateMovieClip y su sintaxis es la siguiente: duplicateMovieClip(objetoOrigen:MovieClip, nuevoNombre:String, profundidad:Number); objetoOrigen: Es el MovieClip que va a ser duplicado. nuevoNombre: Nombre del MovieClip duplicado. profundidad: igual que la creacin de los controles de texto, es un nmero identificador del MovieClip.

Cuando se crea un MovieClip o cualquier otro objeto en _root, estos objetos vienen a formar parte de un Array Madre, que puede ser invocado como los arrays con nombres en sus posiciones, que se crearon en el capitulo de arrays que tocamos. Es decir, solo como ejemplo: //Crea un MovieClip duplicado _root.duplicateMovieClip(estrella_mc, "estrella1", 1); //al MovieClip duplicado se le asigna 100 a su propiedad _x _root["estrella1"]._x=100; Teniendo en cuenta estos tips, empecemos con el programa:

o Cree un MovieClip y colquele el nombre estrella_mc

o Las dimensiones del MovieClip debe ser de 100x100 y su posicin en la coordenada 100,100. o De clic en el fotograma1 y digite lo siguiente: // Declaracin de una funcin que hace rotar el objeto presente function rotar(){ this._rotation+=5; } //Crea dos nuevos MovieClips basados en estrella_mc duplicateMovieClip(estrella_mc, "estrella1", 1); duplicateMovieClip(estrella_mc, "estrella2", 2); //A los dos nuevos MovieClips se les asigna sus nuevas coordenadas x _root["estrella1"]._x=250; _root["estrella2"]._x=400; //se les asigna la funcin al evento onEnterFrame de cada MovieClips _root["estrella_mc"].onEnterFrame=rotar; _root["estrella1"].onEnterFrame=rotar; _root["estrella2"].onEnterFrame=rotar; o Pruebe la pelcula. Este cdigo puede ser escrito de otra forma: function rotar(){ this._rotation+=5; } duplicateMovieClip(estrella_mc, "estrella1", 1); duplicateMovieClip(estrella_mc, "estrella2", 2);

estrella1._x=250; estrella2._x=400; estrella_mc.onEnterFrame=rotar; estrella1.onEnterFrame=rotar; estrella2.onEnterFrame=rotar; y funciona igual, pero el hecho que se puede invocar en forma de arrays en las sentencias nos abre las puertas para meter dichas declaraciones en bucles o condiciones, tal y como vemos en el siguiente programa. Programa 18: Uso de duplicateMovieClip, _root y eventos Este programa realmente no insertar ningn concepto nuevo, pero si dar una muestra de lo que es capaz ActionScript. o Dibuje un escenario tal y como sigue:

o Simular ser un can y un disparo, el disparo (osea la estrella), convierta en MovieClip y coloque el nombre fuego_mc. o A la capa colquele el nombre fondo o Cree una nueva capa, colquele el nombre bala, y ah dibuje exactamente delante de la punta del caon un MovieClip en forma de bala, colquele al MovieClip el nombre de bala_mc; mueva la capa abajo para que la bala se vea debajo del MovieClip fuego_mc tal y como muestra la figura siguiente

o Tambin en la misma capa (bala) inserte un botn cualquiera

o Hasta el fotograma 3 inserte fotogramas con F5 en ambas capas creadas

o Cree una nueva Capa y colquele el nombre script e inserte fotogramas claves vacos hasta el 3.

o En el fotograma1 de la capa script digite el siguiente cdigo: //Crea dos variables, una ser activadisparo que activara una animacin de disparo //y otra que llevara el numero de disparos hechos con el caon var activadisparo:Number=0; var numerodisparo:Number=0; //Se colocan los MovieClips bala_mc y fuego_mc invisibles bala_mc._visible=false; fuego_mc._visible=false; o En el fotograma2 de la capa script digite el siguiente cdigo: //se declara una funcin llamada disparon que hara que los duplicados de bala_mc se muevan //10 posiciones cada vez que entren en un fotograma function disparo(){ this._x+=10; } // Se declara la funcin literal sin nombre- para el evento onEnterFrame del _root onEnterFrame=function(){ fuego_mc._visible=false; //se coloca fuego_mc nuevamente invisible //si la variable activadisparo es 1 entonces se crea un duplicado de pelcula bala_mc if(activadisparo==1){ _root.numerodisparo++; //el contador numerodisparo aumenta en 1 fuego_mc._visible=true; //el fuego se pone visible un fotograma

//se crea el duplicado de pelcula bala_mc y se le asigna el nombre de //bala+el numero de disparo, bala1, bala2, etc duplicateMovieClip(bala_mc, "bala"+_root.numerodisparo, _root.numerodisparo); //se le asigna a la nueva bala la funcin disparo para que se mueva al frente _root["bala"+_root.numerodisparo].onEnterFrame= disparo; //se quita la activacin del disparo a 0 nuevamente activadisparo=0; } //fin del condicional if } o En el fotograma3 de la capa script digite lo siguiente: gotoAndPlay(2); //se hace un bucle y la pelcula correra entre el fotograma2 y 3 o Ahora solo falta activar el disparo (activadisparo) a travs de un evento, para esto se har que cuando se presione la tecla espaciadora, el can dispare y esto se realiza digitando lo siguiente en el botn: on(keyPress "<Space>"){ _root.activadisparo=1; } o Cambie la velocidad de la pelcula a 100 fotogramas por segundo para que se vea ms espectacular el efecto. o Pruebe la pelcula

EJERCICIOS DEL CAPITULO VI


Ejercicio1: Realice un programa en ActionScript que con las teclas cursoras se mueva un MovieClip en el escenario. Ejercicio2: Realice un programa en ActionScript que cada vez que se da clic izquierdo sobre un MovieClip este rote 5 grados. Ejercicio3: Mejore el programa de rebote de una bola dentro de un recuadro, pero esta vez cada vez que se presione la tecla control se inserte una nueva bola en el escenario. Ejercico4: Cree una animacin flash con un avin en marcha, pero cada vez que se presiona Control, suelte una bomba.

CAPITULO VII: OBJETOS DE NIVEL SUPERIOR


El truco del objeto de nivel superior es que son objetos que no necesitan declaraciones y son directamente utilizables desde cualquier lugar del cdigo, tiene el mismo nivel de _root, pero casi siempre son utilizadas como hijas de la lnea de tiempo principal. Existen muchos objetos races en ActionScript (consultar Clases ActionScript en el referencia del lenguaje), pero se vern los ms importantes y su uso es bastante sencillo en ActionScript.

Objeto Key
Los mtodos y propiedades se pueden utilizar sin declarar variables previamente. Se usan frecuentemente para crear una interfaz que un usuario pueda controlar con un teclado estndar. Las propiedades de la clase Key son constantes que representan las teclas ms utilizadas en las aplicaciones de control, como las teclas de flecha AvPg y RePg. El objeto Key almacena de alguna forma ya sea cdigo ascii, nombre, etc- la tecla que est siendo presionada; tambin tiene instrucciones especficas para las teclas ms utilizadas. Propiedades: BACKSPACE CONTROL El valor de cdigo de tecla asociado a la tecla Retroceso (8). El valor de cdigo de tecla asociado a la tecla

DOWN END ENTER ESCAPE HOME INSERT LEFT RIGHT SHIFT SPACE UP:Number Mtodos: getAscii() isDown(codigo)

Control (17). El valor de cdigo de tecla asociado a la tecla de flecha abajo (40). El valor de cdigo de tecla asociado a la tecla Fin (35). El valor de cdigo de tecla asociado a la tecla Intro (13). El valor de cdigo de tecla asociado a la tecla Esc (27). El valor de cdigo de tecla asociado a la tecla Inicio (36). El valor de cdigo de tecla asociado a la tecla Insert (45). El valor de cdigo de tecla asociado a la tecla de flecha izquierda (37). El valor de cdigo de tecla asociado a la tecla de flecha derecha (39). El valor de cdigo de tecla asociado a la tecla Mays (16). El valor de cdigo de tecla asociado a la tecla Barra espaciadora (32). El valor de cdigo de tecla asociado a la tecla de flecha arriba (38). Devuelve el cdigo ASCII de la ltima tecla presionada o soltada. Devuelve true si est presionada la tecla especificada en keycode; false en caso contrario.

Eventos: onKeyDown onKeyUp Se notifica cuando se presiona una tecla. Se notifica cuando se suelta una tecla.

Sin embargo, el objeto Key por ser un objeto primario no puede orientar sus eventos hacia un solo objeto, es decir, tiene que poner su disponibilidad para el objeto o control que desee, esto se hace con una mtodo de l en donde se coloca el objeto que lo va invocar: Key.addListener(Objeto); Con esta lnea de cdigo se le est diciendo al compilador que el objeto podr utilizar los eventos del objeto Key. Ejemplos de cdigos utilizando el Objeto Key. Key.addListener(_root); //Se le da permiso a _root utilizar los eventos de Key _root.onKeyDown= function(){ trace("hola"); } Cada vez que se presiona cualquier tecla, el panel de salida imprime hola.

Key.addListener(_root); _root.onKeyDown= function(){ trace(Key.getAscii()); } Cada vez que se presiona cualquier tecla, el panel de salida imprime su cdigo asccii. Key.addListener(_root); _root.onKeyDown= function(){ //Si una tecla es presionada, en x+ if(Key.isDown(Key.RIGHT)){ movie_mc._x++; } //Si una tecla es presionada, clip en xif(Key.isDown(Key.LEFT)){ movie_mc._x--; } //Si una tecla es presionada, y+ if(Key.isDown(Key.DOWN)){ movie_mc._y++; } //Si una tecla es presionada, en yif(Key.isDown(Key.UP)){ movie_mc._y--; } } Cdigo que mueve un MovieClip utilizando las teclas cursoras.

y esta es DERECHO entonces mueve clip

y esta es IZQUIERDO entonces mueve

y esta es ABAJO entonces mueve clip en

y esta es ARRIBA entonces mueve clip

Objeto Math
A igual que Key es un objeto de nivel superior y no necesita declaracin para poder ocupar sus propiedades y mtodos. A continuacin una tabla con algunos de sus propiedades y mtodos: E PI abs(x) cos(x) floor(x ) log(x) Max(x ,y) min(x, Propiedades nmero e. Constante pi 3,141592653589793. Mtodos Devuelve valor absoluto de x. Calcula y devuelve el coseno del ngulo especificado en radianes. Devuelve el valor redondeado de x al nivel inferior. Devuelve el logaritmo de x. Calcula x e y y devuelve el valor mayor. Calcula x e y y devuelve el valor ms pequeo.

y) pow(x ,y) rando m() round( x) sqrt(x )

Calcula y devuelve x elevado a la potencia de y. Devuelve un nmero aleatorio, entre 0 y 1. Devuelve el valor redondeado de x al nivel superior. Calcula y devuelve la raz cuadrada de x.

Usualmente las funciones matemticas dan un alto poder a las animaciones que no son rectilneas Programa 19: Grafica de una parbola con Math. o Cree un nuevo documento de Flash e inserte un MovieClip, y colquele el nombre de bola_mc y colquela en la coordenada 0,0.

o De clic en el fotograma1 y digite el siguiente cdigo: // Funcin literal para el evento onEnterFrame del MovieClip bola_mc.onEnterFrame=function(){ this._x++; //aumenta la coordenada x en 1 this._y=Math.pow(0.2*(this._x-200),2)+100; //Calcula la coordenada y de la parabola } La ecuacin se induce a raz de la forma ms compleja de la ecuacin de parbolas: y=a(x-d)2+z

Donde: a, es el factor de curvatura (o foco) x, es la coordenada x d, es el desplazamiento horizontal de la parbola z, es el desplazamiento vertical Tome en cuenta que nos encontramos en el plano1 del eje cartesiano, ya que las coordenadas del lienzo en flash es: x (0,0)

Programa 20: Grafica de una parbola con Math. o Cree una pelcula Flash y el lienzo configrelo en 500x400 o Inserte un MovieClip, colquele el nombre de estrella_mc o En el fotograma1 digite lo siguiente: var nEstrella:Number=1; o Cree un fotograma clave en 2 y digite lo siguiente: //Duplica la pelcula y le asigna el nombre estrella+ la variable nEstrella duplicateMovieClip(estrella_mc,"estrella"+nEstrella,nEstrella); _root["estrella"+nEstrella]._x=Math.random()*500; //variable aleatoria en x _root["estrella"+nEstrella]._y=Math.random()*400; //variable aleatoria en y nEstrella++; //Estrella aumenta en 1 o Cree otro fotograma calve en 10 y digite lo siguiente: gotoAndPlay(2); o Pruebe la pelcula Este ultimo programa muestra el uso de la funcin random del objeto Math, con la instruccin _root["estrella"+nEstrella]._x=Math.random()*500

Lo que se hace es que al nuevo MovieClip se le aplica en la coordenada x, un valor aleatorio entre 0 y 499 que es el ancho del lienzo, la misma lgica se aplica a la coordenada y.

Objeto _Global
Muchas veces es necesario declarar variables, funciones y dems objetos en Flash, que no sea tan complicado llamarlas desde donde fueron declaradas, es decir, que no importa su ruta absoluta o relativa puedan ser invocadas con facilidad. Aunque este fenmeno tiende a crear mala programacin, siempre y cuando su uso sea limitado, puede resultar sano utilizarlas. Para poder hacer esto, se declara el objeto como una propiedad del objeto _global de la siguiente forma: _global.nObjeto; Para poderlas invocar se ocupan anteponiendo el objeto _global o simplemente el nombre del objeto. Ejemplos: _global.numero=1; Declara una variable global y le asigna el valor de 1 _global.mensaje=function(){ trace("funcion global"); } Declara una funcin global.

Objeto Date
Realmente este objeto no es uno de nivel superior, sin embargo, es una clase primordial de Flash y siendo un tipo de dato se maneja como tal. Este tipo de dato se utiliza para manejar el reloj del sistema y tiene diferentes mtodos para manejarlos. getDate( ) getDay() getHours () getMinut es() getMont h() getSecon ds() getYear( ) toString( ) Devuelve el da del mes (un entero del 1 al 31) del objeto Date especificado de acuerdo con la hora local. Devuelve el da de la semana (0 para domingo, 1 para lunes, etc.) del objeto Date especificado de acuerdo con la hora local. Devuelve la hora (un entero del 0 al 23) del objeto Date especificado de acuerdo con la hora local. Devuelve los minutos (un entero del 0 al 59) del objeto Date especificado de acuerdo con la hora local. Devuelve el mes (0 para enero, 1 para febrero, etc.) del objeto Date especificado de acuerdo con la hora local. Devuelve los segundos (un entero del 0 al 59) del objeto Date especificado de acuerdo con la hora local. Devuelve el ao del objeto Date especificado de acuerdo con la hora local. Devuelve un valor de cadena para el objeto de fecha especificado en un formato legible.

Para declara una variable de tipo de Date se hace igual que la de un array: var Variable:Date=new Date(); Algunos ejemplos de cdigo: var fecha:Date=new Date(); trace(fecha); Declara una variable fecha e imprime la fecha actual. var fecha:Date=new Date(2007,3,1); trace(fecha); Declara una variable fecha, se le da el valor del 1 de marzo del 2007. var fechaV:Date=new Date(2007,1,1); //fechaV=1 de Enero de 2007 var fechaA:Date=new Date(2007,3,15); //fechaA=15 de Marzo de 2007 var dias:Number; dias=fechaA-fechaV; //dias igual en milisengundos de fechaA-fechaV dias=dias/1000;//conversion a segundos dias=dias/60; //conversion a minutos dias=dias/60; //conversion a horas dias=dias/24; //conversion a dias //Imprime la cantidad de dias que han transcurrido desde el 1 de Enero de 2007 al //15 de marzo de 2007 trace(dias); Interesante cdigo que demuestra cmo se pueden operar sobre fechas, inclusive se puede restar (o sumar) y el resultado se deposita en una variable que almacena la cantidad de milisegundos de diferencia entre una fecha y la otra.

Objeto Mouse
El objeto Mouse, es un objeto primario, que simplemente tiene cuatro mtodos aunque dos de ellos quedan para un nivel superior de ActionScript. Este objeto tiene la instruccin de operar sobre el puntero del Mouse de la pelcula, aunque existen propiedades mas especializadas, el objeto primario Mouse se utiliza para ocultar el cursor y cambiar algunas de sus propiedades tambin. hide() show() Devuelve el da del mes (un entero del 1 al 31) del objeto Date especificado de acuerdo con la hora local. Devuelve el da de la semana (0 para domingo, 1 para lunes, etc.) del objeto Date especificado de acuerdo con la hora local.

La instruccin: Mouse.hide(); Es un simple cdigo que lo que hace es ocultar el puntero del Mouse. Programa 21: Movimiento de un MovieClip con Mouse. Este es un clsico de animacin, no introduce nuevos conceptos salvo el mtodo hide() del Mouse. o Cree una pelcula Flash e inserte un MovieClip y colquele el nombre de clip_mc

o De clic el fotograma1 y digite el siguiente cdigo: clip_mc.onEnterFrame=function(){ Mouse.hide(); this._x=_root._xmouse; this._y=_root._ymouse; } o Pruebe la pelcula.

EJERCICIOS DEL CAPITULO VII


Ejercicio1: Realice un programa que dispare un can con la tecla control, la trayectoria tiene que ser parablica.

Ejercicio2: Realice un programa en ActionScript que exista un MovieClip redondo y cambie de forma de la siguiente manera: Al presionar cursora arriba: el objeto crece verticalmente Al presionar verticalmente Al presionar verticalmente cursora abajo: el objeto disminuye

cursora

derecha:

el

objeto

crece

Al presionar cursora izquierda: el objeto disminuye verticalmente. Al mencionar sobre crecer o disminuir, recuerde que se refiere a las escalas. Ejercicio3: Cree un programa en ActionScript que tenga un MovieClip en forma de nube y cree duplicados de diferentes tamaos, que aparezcan en orden aleatorio y que se muevan sobre el escenario.

CONCLUSIONES

Hemos visto como el ActionScript ofrece un potencial como cualquier otro lenguaje de programacin. ActionScript crea variables y poco a poco se complic la cosa, viendo como las variables se transformaban en variables ms complejas como arrays, y como tambin estos sirvieron de introduccin a los objetos, dichos objetos tienen propiedades (que son variables tambin), mtodos (que son funciones) y eventos. Los mtodos por ejemplo existen definidos por el usuario (cuando se declararon funciones) y otros son literales hacia los eventos. Finalmente se conocieron los objetos races o primarios como _root, Mouse, _global, etc. El hecho de manejar la terminologa de jerarquas, funciones, variables, objetos y eventos, nos deja introducidos a un concepto superior llamado: clases. Que es la base de los proyectos en flash que nos ayudarn a realizar mega-sistemas que manejan animaciones, pelculas externas, sonidos, archivos de cualquier tipo, formularios, base de datos y compatibilidad con tecnologas como XML, HTML, CSS y PHP.. Pero esa... Es otra historia...

Autor: Carlos David Pleitez Docente Informatica ITCA-FEPADE

También podría gustarte