Upload
ulisescalde
View
244
Download
0
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()