Action Script 1

Embed Size (px)

Citation preview

  • 8/3/2019 Action Script 1

    1/73

    CAPITULO I:

    INTRODUCCIN ALACTIONSCRIPT

    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 ECMA-

    262, 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 AccionesEn Flash existe un panel en donde introduciremos el cdigo

    ActionScript respectivo, dicho panel se llama Panel de Accionesy aparece

    presionando la tecla F9.

  • 8/3/2019 Action Script 1

    2/73

    El panel se etiqueta con el nombreAccionesseguido de un palabraclave 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 completode Clases, funciones,propiedades, mtodos,palabras clave, etc. delprograma.

    El indicador de SeleccinActual: Marca en dondeestamos escribiendo el cdigoActionScript y los diferenteselementos de la pelcula queesta programados

    El editor ActionScript: Estees el editor en donde seescribe las sentenciasActionScript.

    En el editor ActionScript se puede crear mltiples pestaas a modo de

    trabajar en diferentes lugares simultneamente sin necesidad de ir donde elobjeto 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 nivelActionScript: Genera una seccinde cdigo de las principalesutilidades del ActionScript.Buscador: Herramienta quefunciona igual que cualquier editorde texto primitivo y realiza lafuncin de buscar y reemplazar.Generador de Rutas: Potenteherramienta ActionScript que genera

    rutas absolutas o relativas de losobjetos en Flash.

  • 8/3/2019 Action Script 1

    3/73

    Verificador: Herramientadepurador de ActionScript que nosindica posibles errores de sintaxis enel cdigo ActionScript.Formato Automtico: Potente

    herramienta que realiza un dentadode cdigo.

    Consejos: nos muestra con unToolTipText sugerencias paraescribir cdigo ActionScript.

    Puntos de corte: Utilidad dedepuracin que coloca puntos decorte para examinar el cdigoActionScript 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 sufichero:

    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.

  • 8/3/2019 Action Script 1

    4/73

    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 lasinstancias 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 esuna modalidad parecida a las consolas de SQL o Java.

    Programa 1(Funcin trace)o Crear un nuevo programa en Flash

    o Dar clic en el fotograma 1 (que ya es un fotograma clave)

    o Presionar F9

    o verifique que en panel de Acciones diga Acciones fotograma,

    y escriba la siguiente instruccin:

    trace(Mi primer programa);

  • 8/3/2019 Action Script 1

    5/73

    o 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 ActionScriptTalvez 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 compilador (de tercera

    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(); Detiene el cabezal en la lnea de tiempo en el fotograma endonde se coloc dicho cdigo.

    gotoAndPlay(10);

    Instruccin que mueve el cabezal al nmero de fotogramao nombre de fotograma especificado y se pone en marcha.

    play(); Pone el cabezal en marchagotoAndStop(10);

    Instruccin que mueve el cabezal al nmero de fotogramao nombre de fotograma especificado y se detiene.

  • 8/3/2019 Action Script 1

    6/73

    EJERCICIOS DEL CAPITULO IEjercicio1: 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 YOPERADORES

    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 nodecimales.

    1 200 5963

    Flotantes: Contienen datos numricos de tipo decimal o Cientfico

    1.2 5.63665 3.14159 2x105

  • 8/3/2019 Action Script 1

    7/73

    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 serigual 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)

  • 8/3/2019 Action Script 1

    8/73

    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, Apellido:String=Pleitez Gonzalez,Estado:Bolean=true;

    Programa 2 (Creacin y asignacin de variables)o Crear un nuevo programa en Flash

    o Dar clic en el fotograma 1 (que ya es un fotograma clave)

    o Presionar F9

    o verifique que en panel de Acciones diga Acciones fotograma,

    y escriba la siguiente instruccin:

    var Nombre:String;

    Nombre=Carlos David;

    trace(Nombre);

  • 8/3/2019 Action Script 1

    9/73

    o 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.

    OperadoresLos 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 despusla asigna a la variable, por ejemplo: x+=1;, es el equivalente ax=x+1; esta misma lgica se aplica a las dems funciones:

    UNARIOS++ Incrementa el valor en 1

    -- Decrementa el valor en 1! Negacintypeof Informacin de tipo de datosvoid Informacin no definida

    LOGICOS== Igualdad!= Desigualdad> Mayor que< Menor que

    >= Mayor o igual

  • 8/3/2019 Action Script 1

    10/73

    x=1; Asigna el valor de 1 a la variable xx=1+4; Suma 1 y 4 y lo asigna a la variable

    xx+=2; Suma x y 2 y asigna el valor a xx--; Realiza la operacin x-1 y lo asigna a

    x1!=2 Compara 1 y 2, como son diferentesda true

    1==2 Compara 1 y 2, como son diferentesda false

    Programa 3 (Uso de variables y operadores)o Crear un nuevo programa en Flash

    o Dar clic en el fotograma 1

    o Presionar F9

    o 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.

  • 8/3/2019 Action Script 1

    11/73

    Nota: Para este programa utilizamos parntesis que es consideradootro 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 variablesLas 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 tiempoprincipal)

    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)

    o 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;

  • 8/3/2019 Action Script 1

    12/73

    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

    o Ahora de clic al fotograma 20 de la capa animacin y digite elsiguiente 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 tiempoprincipal 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.

  • 8/3/2019 Action Script 1

    13/73

    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 notocar 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.

  • 8/3/2019 Action Script 1

    14/73

    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 paneldel Inspector de propiedades (vea la figura siguiente)

    o De doble clic sobre el MovieClip y en el fotograma 1 del objeto

    digite lo siguiente:

    var Nombre:String="Polar";

  • 8/3/2019 Action Script 1

    15/73

    o 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:

  • 8/3/2019 Action Script 1

    16/73

    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 elMovieClip 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 eltercer 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 delobjeto estrella, pero a su vez, este est dentro del objeto madre _root. Ycomo 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 ymtodos, 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; Propiedad que devuelve la cantidad de caracteres que tieneel String

    charAt(ind

    ex);

    Mtodo que devuelve el carcter que se encuentra en la

    posicin indexdel Stringslice(start,end);

    Mtodo que devuelve una cadena de caracteres desde laposicin starthasta 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);

  • 8/3/2019 Action Script 1

    17/73

    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: unacadena 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 Fraselengthque 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 b r A C a d a b r a0 1 2 3 4 5 6 7 8 9 10

  • 8/3/2019 Action Script 1

    18/73

    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 yTexto DinmicoExisten 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 Propiedad tipo booleano que especifica si el campo detexto tendr color de fondo

    backgroundColor

    Especifica en color tipo Hexadecimal que contendr.

    text Valor String del campo de textomaxChars 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.

  • 8/3/2019 Action Script 1

    19/73

    Programa 6 (Uso de Introduccin de texto y Texto Dinmico)

    o 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.

    o 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.

    o Inserte un botn que diga suma

  • 8/3/2019 Action Script 1

    20/73

    o 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, eneste caso _root.

  • 8/3/2019 Action Script 1

    21/73

    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 textde 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 queson, existen muchos ms estructurados y complejos que se les dedicaran

    captulos aparte.

    EJERCICIOS DEL CAPITULO IIEjercicio1: 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 EdadMis 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: rentaAsi 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 delSueldo 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.

  • 8/3/2019 Action Script 1

    22/73

    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

  • 8/3/2019 Action Script 1

    23/73

    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-IFEsencialmente, 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 yavistos (==, =, !=), y se vern tres nuevos: la operacin And, Or y Not.

    && Operador And, que se devuelve true cuando dos sentencias sonverdaderas.

    || Operador Or, que devuelve true si cualquiera de las dos sentenciascon verdaderas

    ! Operador Not, que devuelve lo contrario a lo que da la sentencia (yase true o false)

    Ejemplos:

    var Numero:Number=20;

  • 8/3/2019 Action Script 1

    24/73

    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=300 && Sueldo 600 && Sueldo

  • 8/3/2019 Action Script 1

    25/73

    Sentencia Switch-caseEsta 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 valor1;

    break;

    case valor2 :

    sentencias case valor2;

    break;

    case valorN :

    sentencias case valorN;

    break;

    default :

    sentencias que se ejecutan si ninguno de los casos resulta

    cierto;

    break;

    }

    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 desu 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 && Sueldo

  • 8/3/2019 Action Script 1

    26/73

    break;

    case (Sueldo>=600 && Sueldo

  • 8/3/2019 Action Script 1

    27/73

    o 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();

    o Pruebe la pelcula.

  • 8/3/2019 Action Script 1

    28/73

    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.borderse le

    asigna el valor de true; a la propiedad Num2.borderse le asigna el valor

    de Num3.border, pero como este ya es true, se le asigna true tambin; ala propiedad Num1.borderse le asigna el valor de Num2.border, pero

    como este es igual Num3.border que a la vez es igual a true, entonces leasigna true tambin a Num1.border. La misma lgica se aplica a las otras

    de backgroundy 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-DoOtra 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

  • 8/3/2019 Action Script 1

    29/73

    while(i

  • 8/3/2019 Action Script 1

    30/73

    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 ForUna sentencia especializada en ciclos rgidos, pero de alto poder, susintaxis 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

  • 8/3/2019 Action Script 1

    31/73

    var i:Number;var limite:Number=5;var factorial:Number=1;for(i=1;i

  • 8/3/2019 Action Script 1

    32/73

    e del objeto_yscale

    Propiedad que establece la escala en alto con proporcin 1:1 en y

    _alpha

    Propiedad que establece el color alfa del objeto, tomando enconsideracin 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 detiempo

    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._xva incrementndose en uno por lo que

    se ve el efecto del movimiento rectilneo. Ahora bien, se pueden hacer

  • 8/3/2019 Action Script 1

    33/73

    bucles finitos en las pelculas tambin, simplemente controlando una

    variable. Veamos el siguiente programa:

    Programa 9: Transformacin Alfa con Bucle en lnea de tiempoo Cree una pelcula e inserte un MovieClip en forma de estrella, y

    colquele el nombre al MovieClip de estrella_mc.

    o 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

    o 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;

    }

  • 8/3/2019 Action Script 1

    34/73

    //Para saber el cambio de ciclo, los limites del valor transparencialo dicen:

    //si la transparencia es 0, el ciclo 2 empieza, si es 100, es el ciclo 1y 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 elciclo.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 IIIEjercicio1: 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 textoDinamica, 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)

  • 8/3/2019 Action Script 1

    35/73

    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 textono 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 queno se mostr en su momento ya que su manejo requiere de ms que

  • 8/3/2019 Action Script 1

    36/73

    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 multiplesdatos, 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 ArraysLa 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

    dejuan, pedro y mara. La instruccin trace publica apedro, 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 arraySueldos[0]=250; //elemento 0Sueldos[1]=500; //elemento 1

    Sueldos[2]=450; //elemento 2trace(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

  • 8/3/2019 Action Script 1

    37/73

    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() Elimina el ltimo elemento de una matriz y devuelve el valor

    de dicho elemento

    shift() Elimina el primer elemento de una matriz y devuelve dicho

  • 8/3/2019 Action Script 1

    38/73

    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 ArrayCrearemos 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:

    o Coloquele a los cuadros de Introduccin de texto, los nombres

    de Nombre_txty Edad_txtrespectivamente.o En el fotograma1 digite el siguiente cdigo:

    var MisNombres=new Array(); //Nuevo Array de Nombresvar MisEdades=new Array(); //Nuevo Array de Edadesvar contador=0; //Variable que ira conteniendos cuantos datos son

    agregadosstop();

    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

  • 8/3/2019 Action Script 1

    39/73

    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.

    o Ahora en el botn VER DATOS, digite lo siguiente:

    on(release){var i:Number=0;for(i=0; i

  • 8/3/2019 Action Script 1

    40/73

    CAPITULO V:

    FUNCIONES

    Utilizar funciones, es la parte medular de todo programa bienestructurado, 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 posteriorinvocacin en el programa ActionScript

    Invocacin de una Funcin: A este proceso se le llama Call y espara utilizar la funcin y que nos devuelva un dato o ninguno.

    Parmetros de la Funcin: Variables de todo tipo que recibe lafuncin 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

  • 8/3/2019 Action Script 1

    41/73

    la funcin para su posterior procesamiento.

    return: es una instruccin ActionScript que indica que la funcin varetornar 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

    mensajefunction Impresion(){

    trace("Mi Primera Funcin");}

    //En el siguiente bucle, la funcin se invoca 3 vecesfor(i=0;i

  • 8/3/2019 Action Script 1

    42/73

    }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 ImprimeVque 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 MovieClipo Cree una pelcula que contenga tres MovieClips y asgnele los

    nombres de movie1, movie2 y movie3 respectivamente.

    o En el fotograma1 digite el siguiente cdigo:

    //Declaracion de una funcin que tiene como parmetros unMovieClip, 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 tamanoEstadoMovie(movie1, 30, 100);

    //se invoca la funcin y se pasa el parmetro movie2 y valor alfa 60 ytamao=50

    EstadoMovie(movie2, 60, 50);EstadoMovie(movie3, 100, 0);stop();

    o Pruebe el Resultado:

  • 8/3/2019 Action Script 1

    43/73

    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 returnHasta 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 delnmero respectivo. La instruccin return(letra) hace que la funcin

  • 8/3/2019 Action Script 1

    44/73

    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.

    o A los cuadros de Introduccin de texto asgnele los nombres de

    horas_txt y pagoh_txt respectivamente.

    o Al cuadro de texto dinmico asgnele el nombre de ex_txt

    o En el fotograma1 digite el siguiente cdigo:

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

  • 8/3/2019 Action Script 1

    45/73

    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 podemosindicarle 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

  • 8/3/2019 Action Script 1

    46/73

    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 variablesvar cadena:String="mensaje";

    //la funcin cuadrado tiene que devolver un nmerofunction cuadrado(n:Number):Number{

    return(n*n);}num1=cuadrado(num1); //asignacin del cuadrado de num1 a num1cadena=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 comopaso por valor

  • 8/3/2019 Action Script 1

    47/73

    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 matrizPaises[0]="El Salvador";Paises[1]="Mexico";Paises[2]="Colombia";

    //Imprime en el panel de Salida los diferentes elementos del arrayfor(i=0;i

  • 8/3/2019 Action Script 1

    48/73

    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 VEjercicio1: 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.

  • 8/3/2019 Action Script 1

    49/73

    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 laprogramacin 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 deObjetos 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 botnonClipEvent Evento cuando algo pasa sobre el

    movieCliponEnterFrame Evento cuando el cabezal toca un

    fotograma en lnea de tiempoprincipal.

    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 onEl 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 Se presiona el botn y suelta.press Se presiona el botn

  • 8/3/2019 Action Script 1

    50/73

    rollOver El puntero del ratn se mueve sobre el botnrollOut El puntero del ratn se mueve afuera del botnkeyPressKey

    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 relativasYa 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 sentenciaparent

    this._parent.Objeto.propiedad

    Consideremos el siguiente ejercicio:

    Programa 13: Utilizacin del evento on y referencias absultas yrelativas

    o Cree una pelcula Flash con un botn y un MovieClip, al

    MovieClip colquele el nombre de bomba_mc.

  • 8/3/2019 Action Script 1

    51/73

    o En el botn digite el siguiente cdigo:

    on(keyPress ""){_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 sucoordenada 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 ""){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

  • 8/3/2019 Action Script 1

    52/73

    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 Se ejecuta cuando el MovieClip entra en el escenarioprincipal.

    unLoad Se ejecuta cuando el MoviClip deja de estar en el escenarioprincipal

    enterFrame Se ejecuta cada vez que el MovieClip entra en un fotograma

    de la lnea de tiempo principal.MouseDown

    Se ejecuta cuando se presiona el clic izquierdo del raton.

    MouseMove Se ejecuta cuando se mueve el puntero del ratn sobre elMovieClip

    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

  • 8/3/2019 Action Script 1

    53/73

    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, peronuestra 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: 50,50

    Esquina Superior derecha: 450,50

    Esquina Inferior derecha:450,300

    Esquina Inferior izquierda: 50,300

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

  • 8/3/2019 Action Script 1

    54/73

    o Esto significa que el cuadrante debe tener un ancho de 400

    pixeles y un alto de 250, y su posicin (50,50).

    o 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

    o 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 positivostop();

    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 espositivo

    if(this._x==50){_root.incrementox=1;

  • 8/3/2019 Action Script 1

    55/73

    }// 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 espositivo

    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 LiteralesEn 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;

    }

  • 8/3/2019 Action Script 1

    56/73

    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 quetomar 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 La transparencia del objeto

    _currentframe Numero de fotograma actual, es decir, en dondeest el cabeza.

    _framesloaded Cantidad de fotogramas cargados._height Altura del objeto_width Anchura del objeto_visible Propiedad booleana que establece si est visible

    o no el objeto._rotation Valor en grados de rotacin del objeto._xmouse Posicin x del puntero del ratn_ymouse Posicin y del puntero del ratn

    Mtodos

    createTextField Crea un campo de textoduplicateMovieClip

    Duplica un MovieClip ya creado

    createEmptyMovieClip

    Crea un MovieClip vaco

    getBytesLoaded Devuelve la cantidad de Bytes cargadosgetBytesTotal Devuelve la cantidad total de Bytes que pesa la

    pelculaPlay Pone en marcha el cabezalStop Detiene el cabezal

    Eventos

    onEnterFrame Cuando se entra a un fotograma a la velocidadde la pelcula

    onMouseDown Se da clic con el ratnonMouseMove Se mueve el puntero del ratnonPress Se presiona sobre el objetoonRelease Se suelta el ratn sobre el objetoonRollOut Se mueve afuera el puntero del ratn del objetoonRollOver Se mueve el ratn sobre el objetoonKeyDown Se presiona una tecla

    Ahora existen propiedades y mtodos para aplicarlos a los eventos

    con funciones literales.

  • 8/3/2019 Action Script 1

    57/73

    Programa 15: Funcin literal con animacin alfa aplicados aMovieClipsAunque 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 losMovieClips.

    o Cree una pelcula con tres MovieClips insertados, asgnele los

    nombres de clip1_mc, clip2_mc y clip3_mc respectivamente.

    o 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 MovieClipclip1_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.

  • 8/3/2019 Action Script 1

    58/73

    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 enejecucin

    Para poder realizar este programa se utilizar la funcin

    createTextFieldy 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

    o 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 unaanimacin de 50 fotogramas, pero el nico fotograma clave en

  • 8/3/2019 Action Script 1

    59/73

    la animacin ser el fotograma1, es decir, el que contiene el

    cdigo.

    o Pruebe la pelcula.

    Programa 17: Uso de duplicateMovieClip y _rootPara este programa se utilizar el mtodo duplcateMovieClip y susintaxis 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

  • 8/3/2019 Action Script 1

    60/73

    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 presentefunction rotar(){

    this._rotation+=5;}

    //Crea dos nuevos MovieClips basados en estrella_mcduplicateMovieClip(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);

  • 8/3/2019 Action Script 1

    61/73

    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 dearrays 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

  • 8/3/2019 Action Script 1

    62/73

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

    creadas

    o

    Cree una nueva Capa y colquele el nombre scripte insertefotogramas 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 unaanimacin de disparo

    //y otra que llevara el numero de disparos hechos con el caonvar activadisparo:Number=0;var numerodisparo:Number=0;

    //Se colocan los MovieClips bala_mc y fuego_mc invisiblesbala_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 fotogramafunction disparo(){

    this._x+=10;}

    // Se declara la funcin literal sin nombre- para el evento onEnterFrame del_rootonEnterFrame=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_mcif(activadisparo==1){_root.numerodisparo++; //el contador numerodisparo aumenta en 1fuego_mc._visible=true; //el fuego se pone visible un fotograma

  • 8/3/2019 Action Script 1

    63/73

    //se crea el duplicado de pelcula bala_mc y se le asigna el nombrede

    //bala+el numero de disparo, bala1, bala2, etcduplicateMovieClip(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 nuevamenteactivadisparo=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 elfotograma2 y 3

    o Ahora solo falta activar el disparo (activadisparo) a travs de un

    evento, para esto se har que cuando se presione la teclaespaciadora, el can dispare y esto se realiza digitando lo siguiente

    en el botn:

    on(keyPress ""){_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 VIEjercicio1: 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 teclacontrol 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.

  • 8/3/2019 Action Script 1

    64/73

    CAPITULO VII:

    OBJETOS DE NIVELSUPERIOR

    El truco del objeto de nivel superior es que son objetos que no

    necesitan declaraciones y son directamente utilizables desde cualquierlugar 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 KeyLos 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 El valor de cdigo de tecla asociado a la teclaRetroceso (8).

    CONTROL El valor de cdigo de tecla asociado a la tecla

  • 8/3/2019 Action Script 1

    65/73

  • 8/3/2019 Action Script 1

    66/73

    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, y esta es DERECHO entonces mueve clipen x+

    if(Key.isDown(Key.RIGHT)){movie_mc._x++;

    }//Si una tecla es presionada, y esta es IZQUIERDO entonces mueve

    clip en x-if(Key.isDown(Key.LEFT)){

    movie_mc._x--;}

    //Si una tecla es presionada, y esta es ABAJO entonces mueve clip eny+

    if(Key.isDown(Key.DOWN)){movie_mc._y++;

    }//Si una tecla es presionada, y esta es ARRIBA entonces mueve clip

    en y-if(Key.isDown(Key.UP)){

    movie_mc._y--;}

    }Cdigo que mueve un MovieClip utilizando las teclas cursoras.

    Objeto MathA 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:

    PropiedadesE nmero e.PI Constante pi 3,141592653589793.

    Mtodosabs(x) Devuelve valor absoluto de x.cos(x) Calcula y devuelve el coseno del ngulo

    especificado en radianes.floor(x)

    Devuelve el valor redondeado de x al nivel inferior.

    log(x) Devuelve el logaritmo de x.Max(x

    ,y)

    Calcula x e y y devuelve el valor mayor.

    min(x, Calcula x e y y devuelve el valor ms pequeo.

  • 8/3/2019 Action Script 1

    67/73

    y)pow(x,y)

    Calcula y devuelve x elevado a la potencia de y.

    random()

    Devuelve un nmero aleatorio, entre 0 y 1.

    round(x) Devuelve el valor redondeado de x al nivel superior.

    sqrt(x)

    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 MovieClipbola_mc.onEnterFrame=function(){

    this._x++; //aumenta la coordenada x en 1this._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

  • 8/3/2019 Action Script 1

    68/73

    Donde:a, es el factor de curvatura (o foco)

    x, es la coordenada xd, 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:

    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 variablenEstrelladuplicateMovieClip(estrella_mc,"estrella"+nEstrella,nEstrella);

    _root["estrella"+nEstrella]._x=Math.random()*500; //variablealeatoria en x

    _root["estrella"+nEstrella]._y=Math.random()*400; //variablealeatoria en ynEstrella++; //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

    (0,0)x

    y

  • 8/3/2019 Action Script 1

    69/73

    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 demsobjetos 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 DateRealmente 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()

    Devuelve el da del mes (un entero del 1 al 31) del objeto Dateespecificado de acuerdo con la hora local.

    getDay() Devuelve el da de la semana (0 para domingo, 1 para lunes,etc.) del objeto Date especificado de acuerdo con la hora local.

    getHours()

    Devuelve la hora (un entero del 0 al 23) del objeto Dateespecificado de acuerdo con la hora local.

    getMinutes()

    Devuelve los minutos (un entero del 0 al 59) del objeto Dateespecificado de acuerdo con la hora local.

    getMonth()

    Devuelve el mes (0 para enero, 1 para febrero, etc.) del objetoDate especificado de acuerdo con la hora local.

    getSeconds()