Está en la página 1de 36

ActionScript2.

0
InstitutoSuperiorTecnolgicoSISE

ActionScr ipt
2.0

INTRODUCCION
El ActionScript es ellenguaje de programacin que ha utilizado Flash desde sus comienzos, y
queporsupuesto,empleaFlashCS3.Agrandesrasgos,podemosdecirqueelActionScriptnos
permitirrealizarconFlashCS3todoloquenospropongamos,yaquenosdaelcontrolabsoluto
detodoloquerodeaaunapelculaFlash.Absolutamentedetodo.
Todo lo referente a este manual hace referencia a la versin 2 de ActionScript, aunque en
algunosmomentospodrsversuequivalenciaenAS3.
CARACTERISTICASGENERALES

Como ya hemos comentado, el ActionScript es el lenguaje de programacin propio de


Flash,talycomoelLingoloesdeMacromedia Director,porejemplo.ElActionScriptest
basadoenlaespecificacinECMA262,aligualqueotroslenguajescomoJavascript.
ElActionScriptes,comosunombreindica,unlenguajedescript,estoquieredecirqueno
har falta crear un programa completo para conseguir resultados, normalmente la
aplicacin de fragmentos de cdigo ActionScript a los objetos existentes en nuestras
pelculasnospermitenalcanzarnuestrosobjetivos.
El ActionScript es un lenguaje de programacin orientado a objetos, tiene similitudes, por
tanto, con lenguajes tales como los usados en el Microsoft Visual Basic, en el Borland
Delphi etc... y aunque, evidentemente, no tiene la potencia de un lenguaje puramente
orientadoaobjetosderivadodelCodelPascalcomolosanteriores,cadaversinseacerca
msaunlenguajedeestetipo.As,laversin2.0estrenadaenFlashMX2004esmucho
mspotenteymuchoms"orientadaaobjetos"quesuanteriorversin1.0.
El ActionScript presenta muchsimos parecidos con el Javascript si conoce Javascript, la
sintaxisyelestilodeActionScriptleresultarnmuyfamiliares.Lasdiferenciasentreambos
lenguajeslaspuedeencontrarenlaayudaqueacompaaalFlashCS3.
En lamayor parte de las ocasiones, no ser necesario "programar" realmente,Flash CS3
pone a nuestra disposicin una impresionante coleccin de "funciones" (de momento
entenderemos "funciones" como "cdigo ActionScript que realiza una funcin
determinada")ya implementadasquerealizanloquebuscamos,bastarconcolocarlasen
ellugaradecuado.

ActionScript2.0

ELPANELACCIONES
En Flash CS3, el Panel Acciones sirve para programar scripts con ActionScript. Esto es, que
todoloqueintrozcamosendichoPanelseverreflejadodespusennuestrapelcula.Debemos
tener claro desde un principio que el Panel Acciones puede hacer referencia a Fotogramas u
objetos, de modo que el cdigo ActionScript introducido afectar tan slo a aquello a lo que
referenciaelPanel.
ElPanelAccionessedivideen2partes,alaizquierdatenemosunaayudafacilitadaporFlash
quenosdaaccesodeunmodorpidoymuycmodoatodaslasacciones,objetos,propiedades
etc.queFlashtienepredefinidos.Estoselementosestndivididosencarpetas,quecontienena
su vez ms carpetas clasificando de un modo eficaz todo lo que Flash pone a nuestra
disposicin. Para insertarlos en nuestro script bastar con un doble clic sobre el elemento
elegido.

Alapartederechatenemoselespacioparacolocarnuestroscript,aquaparecerloque
vayamosinsertando.Tambinincluyeherramientasdeutilidad,comolabsquedadepalabras,
laposibilidaddeinsertarpuntosdecorte,laherramientaRevisarSintaxisylaayudadeFlash
paraActionScript.
ElPanelAccionesdeFlashCS3,notienenicamenteunmododeedicin.Lalibertaddelmodo
"Experto"estotalyportanto,tambinloeslaposibilidaddecometerfallos,paraasegurarnosde
que nuestro script es correcto, al entrar en Modo Experto nos aparecer un icono con el
siguiente aspecto:
Al pulsarlo Flash revisa nuestro cdigo en busca de posibles errores,
indicndonos,ensucaso,lalneaquepresenteelerroryenquconsisteste.
Esunfallocomnpasarsehorasbuscandoporqunuestrapelculanofuncionacorrectamentey
que el motivo sea que un error de sintaxis ha invalidado todo el cdigo existente en un
fotograma, que acta como si no hubiera NADA DE CDIGO en l. Pongamos pues, mucha
atencinenestoyrevisemoselcdigoconcienzudamente.

ActionScript2.0

El uso del modo en asistente es mucho ms sencillo para ello pulsa el botn Asistente de
Script y selecciona los comandos que quieras incluir, aparecern las opciones que debers
rellenar para que estos comandos funcionen correctamente y el cdigo se generar
automticamente.Estaesunamuybuena utilidadrecuperadaque permitiralosusuariosque
acabandeempezarelusodeestelenguaje.
Aun asesrecomendablesiemprerepasar elcdigoy asirnosfamiliarizandoconlydeeste
modopoder pocoapococrearnuestropropiocdigoenmodoExperto,loquenosdarmayor
flexibilidadalahoradecrearnuestraspelculas.

OPERADORES
EsuntipodecarcterquerealizaunaaccinespecialdentrodeunaexpresindeActionScript.
Una expresin no es ms que un conjunto de operadores, variables y constantes relacionados
entresdeunciertomodo.FlashCS3sacarunresultadodetodaexpresinqueencuentreen
nuestrapelcula.
Ejemplo:
x=3
y=5+x

A.

Esunaexpresincuyoresultadoserasignarlealavariable'x'elvalor3
Esunaexpresincuyoresultadoserasignarlealavariable'y'lasumadela
constante 5ylavariable'x'

OperadoresAritmticos
SIGNO

*
/
%
B.

DETALLE
Suma
Resta
Multiplicacin
Divisin
MdulooResto

OperadoresdeAsignacin
SIGNO

X=10

ActionScript2.0

DETALLE
A la variable X se le asigna el
valorde10

X+=3
C.

Alavariable X selesumaelvalor
anteriorde X ms3

OperadoresdeComparacin
SIGNO

==
>
<
>=
<=
!=
D.

DETALLE
Igualque
Mayorque
Menorque
Mayoroigualque
Menoroigualque
Diferenteque

OtrosOperadores
() :Parntesis.Sirve,paraagrupartrminosydarpreferenciasenlasoperaciones.
" " :Comillas.EnActionScript,todoloquevaentrecomillas,pasaaconsiderarseuna
cadenadecaracteres,porloquelasfuncionesyaccionesqueafectanexclusivamentea
lascadenasdecaracterespasanaafectartambinalelementoentrecomillas.

Elrestodeoperadoresnoseusan tanto, sufuncionalidadydefinicinpuede consultarseenla


propiaayudadeFlash.

LASVARIABLES
Lasvariablessoncontenedoresdondepodremosalmacenarinformacinparatrabajarconella.
Estainformacinpuedesermodificadayleda.Aunquepareceunconceptomuycomplejosu
usoesbastantesencillo.
EnActionScript2.0existen8tiposdiferentesdevariables,losquemsutilizaremossernlos
siguientes:

Boolean:obooleano,puedealmacenarslodosvalores,otrue(verdadero)ofalse
(falso).

Number:puedealmacenarnmerosenterosodecimales,positivosonegativos.Elsigno
decimalenActionScripteselpunto(.).Podrsrealizaroperacionesmatemticascon
estasvariables.

String:puedealmacenarcadenasdecaracteres,esdecir,unconjuntodecaracteres
alfanumricos.LasvariablesdetipoStringdebenirentrecomillasdobles(").

Paradeclararunavariablesedebeescribirlasiguientelnea:
varnombreVariable:tipoVariable=valorVariable

ActionScript2.0

ActionScript2.0

ACCIONES
Las Acciones son funciones predefinidas de ActionScript, es decir: Flash CS3 las crea, y
nosotrosslotenemosqueusarlasdelamaneraquesenosindica.Notenemosquedefinirlas
funciones ni nada por el estilo, ni siquiera necesitamos saber cmo estn hechas. Lo
importante es que estn listas para usar, lo que facilita el uso de este lenguaje de
programacinysobretodo,hagamuyrpidocomenzaraprogramar.
1. ControldePelcula:Paracontrolarelflujodenuestrapelcula,estoes,paraindicara
Flash en todo momento qu fotograma tiene que mostrar, cundo tiene que parar,
dndeseguiretc.
a. gotoAndPlay / goto: La accin que realiza consiste en mover la cabeza
lectoraalfotogramaqueleindiquemos.Lacabezalectoraesloquedetermina
qu fotograma de nuestra pelcula se est reproduciendo en cada momento.
Si, por ejemplo, lo movemos del fotograma 1 al 25, lo que veremos
instantneamente ser el fotograma 25 y la pelcula continuar
reproducindoseapartirdeah.

gotoAndPlay("Escena2",7):

Esta accin lleva la cabeza lectora alfotograma


7delaescenallamada"Escena2".

b. Play:Dacomienzoalareproduccindelapelcula,generalmenteporquealgola
hadetenido.

Play()
c. Stop: Detiene la reproduccin de la pelcula. Se puede usar en un fotograma,
cuando queramos detenernos en l (porque es un men, por ejemplo), en un
botn,(paraquedetengalapelcula)etc.

Stop()

ActionScript2.0

2. Navegador / Red: Estas acciones tiene diversas funciones, describimos las ms


importantes:
a. fscommand: Esta accin, es capaz de ejecutar ciertos comandos muy
potentes. Lo ms cmodo es pasar a Modo Bsico (sino estbamos ya) e
insertarla,nosaparecerunapestaaconlosposiblescomandosqueadmite:

fullscreen : Si se activa pone nuestra pelcula a pantalla completa. Muy til


parapresentacionesenCDRom,porejemplo.

allowscale: Controla el redimensionamiento de los objetos insertados en la


pelculacuandoelusuarioestiralosbordesdelamisma(odelapginaweb
en la que se encuentre) Queremos mantener las proporciones? Este
comandonospermitecontrolarlo.

showmen:Sihasvistoelmenqueaparecealpulsarelbotnderechodel
ratn sobre una pelcula Flash, seguro que has pensado en hacerlo
desaparecer ... puede que no interese que los usuarios puedan moverse a
sus anchas por nuestra pelcula. Ejecutando esta sentencia del modo
adecuado(false),podremosocultarlo.

trepallkeys:Sirveparadetectarlaspulsacionesdetodaslasteclasdurantela
reproduccindenuestraspelculas.

fscommand("comando","true/false")
comando:Elcomandoaejecutar(fullscreen,allowscale,etc...)
true / false: Aqu debemos escribir true o false, segn queramos desactivar la
opcinoactivarla.
fscommand("fullscreen","true") :Activalapantallacompleta.
b. getURL:Estaaccinseempleaparaabrirelnavegadorwebyabrirlapgina
webquedeseemos.

getURL(url,ventana,"variables")
url:Direccinwebalaquequeremosacceder(seabrirunaventana).
ventana: ParmetroOPCIONAL.Modo enelquequeremosabrirlaventana(en
laventanaactual(_self)enotranueva(_blank)etc...)
Variables:ParmetroOPCIONAL,puedehabervarios.Silapginalopermite(es
ASP,PHPetc...)podemosenviarlevariables.
Ejem plo:

getURL("http://www.peru.com","_blank")

c. loadMovie / loadMovieNum: Esta accin permite cargar nuevas pelculas


Flash o imgenes en nuestra pelcula de forma dinmica (la pelcula se
cargarcuandoseloindiquemos,ynoantes).

loadMovieNum(url,nivel/destino,variables)
url:DireccinabsolutadondeestsituadalapelculaSWFolaimagenJPEG

ActionScript2.0

Nivel / destino: Nivel donde cargaremosla pelcula, teniendo en cuenta que el


nivel bsico es el 0, luego va el 1 y as sucesivamente. Cada nivel superior se
sita delante del anterior y toma el control. Si lo usamos como destino, aqu
deberemosintroducirelnombredelmovieclipdondecargaremoslapelculaoel
nombre del marco si estamos cargando un fichero SWF en una pgina HTML
conmarcos.

Variables:ParmetroOPCIONAL.Podemosenviarvariables.
Ejemplo:

loadMovieNum("MiPeli2.swf",0)
Cargamoslapelcula"MiPeli2.swf"enelnivelprincipal.Noenviamosvariables.
3. AccionesCondiciones
Estas acciones sirven para controlar la lgica de la pelcula. Se puede decir que nos
permiten"hablar"conFlashparaindicarleloquedebehacerantedistintassituaciones.
Porejemplo,ahoraqueconocemosmuchasAcciones,CmoindicarleaFlashque"si
la variable x = 3, entonces vaya al fotograma 5, y sino, vaya al fotograma 10"?.
Sabemoscomparar,sabemosiralosfotogramas,peronosabemosdecirleaFlash"Si
pasaesto,hazunacosa,ysino,hazlaotra...".Veamoscmodecrselo:
a. if...else:Sipartimosdequelatraduccinliteraldeifes"si..."yladeelsees
"sino...",nosencontramosderepentecontodaslasherramientasparadecirle
aFlash:"si(pasaunacondicion){hazesto}sino{hazlootro}"
VeamosantesquenadasuUsoparacomprenderlomejor:

if(condicin){sentencias1...}else{sentencias2...}
if:Indicaqueaccinquevieneacontinuacinesunacondicional
Condicin: Indica una condicin que DEBE cumplirse para que
sucedan las acciones indicadas en "sentencias1". Si stas no se
cumplen, entonces lo que sucede es lo especificado en las acciones
indicadasen"sentencias2".
Paraqueunacondicinsecumpla,debetenercomoresultadotrue,o
lo que es lo mismo, verdadero, o lo que es lo mismo, 1. De ah la
importancia de los operadores de comparacin y el valor que
devuelven.

sentencias1: Conjunto de acciones que sucedern si la condicin se


evala como verdadera. Si hay ms de 1, deben incluirse todas
ENTRELLAVES

else: Especifica la alternativa si condicin se evala a falso. Es


OPTATIVO.Sinoexiste,ynosecumplelacondicin,noseharnada,
puesnolohemosespecificado.

sentencias2: Conjunto de acciones que sucedern si la condicin se


evala como falsa. Si hay ms de 1, deben incluirse todas ENTRE
LLAVES
Ejemplo:

if(x==2){gotoAndPlay(6)}

ActionScript2.0

Si la variable x vale 2, entonces saltamos al fotograma 6, sino, no


hacemosnada

if(y>7){Stop()}else{gotoAndPlay(1)}
Silavariableyesmayorque7,paramoslapelcula,sino,volvemosal
fotograma1.

LOSOBJETOS
Los Objetos, como ya hemos visto en el tema bsico, son instancias de una determinada
clase.Estoes, sonrepresentantesdeunaclaseyadefinida.As,sonobjetos,porejemplo,un
botn, un clip de pelcula, un grfico o un sonido, es decir, que prcticamente TODO es un
OBJETOenFlashCS3.
Vamosaverlos objetos msusadosenFlash yuna brevedescripcindecadaunodeellos.
Comoyasehaexplicadoeneltemabsico,cadaobjetotieneunaseriedePropiedades(que
veremosdespus)yunosMtodosyeventos,quedanfuncionalidadalosobjetos.Cuandoun
componente de Flash pasa a ser un objeto, automticamente pasa a tener todas las
propiedades definidas por Flash para ese objeto y pasa a reaccionar ante los Mtodos y
eventosquetienedefinidos.Podemosencontrarunalistacontodaslaspropiedades,mtodos
yeventosdelosobjetosenelPanelAcciones.
1. Objeto" Button" (Botn):LosobjetosdetipoBotntienen4estados,como yaseha
visto en el captulo correspondiente y reaccionan ante mtodos especiales como
"OnRollOver","OnPress"...quepermitirnquesucedancosascuandoelusuariohaga
clicsobreestosbotones,pase elratnpor encima etc. Cuandonosintereseque una
imagen que hayamos diseado se comporte como un botn, bastar convertirla a
botnyyapodremosusarloseventostpicosdeunbotn.
2. Objeto" MovieClip" (ClipdePelcula):CuandonecesitemoscrearunapelculaFlash
dentro de otra pelcula, pero no queramos tener 2 ficheros separados ni molestarnos
en cargar una pelcula u otra, deberemos crear un objeto movieclip. Entre sus
propiedadesespecialesdestacaquelosobjetos"clipdepelcula"tienen,internamente,
unalneadetiemposquecorreINDEPENDIENTEMENTEdelalneadetiemposdela
pelcula principal de Flash, lo que nos permite crear animaciones tan complejas e
independientes como queramos (podemos crear tantos clips de pelcula dentro de
otroscomoqueramos,porejemplo).
3. Objeto " Sound" (Sonido): Los objetos sonidos no son visuales, y por tanto, no
podremos ver como quedanenlos fotogramas,aligualqueharamosconunbotno
un clip de pelcula. Deberemos controlarlos, por tanto, desde el Panel Acciones y
usando ActionScript. Tienen multitud de mtodos especiales, muy potentes y tiles,
podemos parar un sonido, crear un bucle, darle efectos sonoros etc. Podramos, por
ejemplo,crearunobjetodetiposonidoydespushacerquealpulsarunbotnsuene.
4. Objeto" Mouse" (Ratn):ElobjetomouseesunodelosobjetosdeFlashqueyaest
definido por Flash, pues hace referencia al ratn de Windows (al que manejar el
usuarioqueveanuestrapelcula).Silousamos,podremosaccederalaspropiedades
delratndeWindows,tipodecursos,efectosasociados,deteccindesuposicinetc.
Vale la pena insistir en que su manejo NO es anlogo al de otros objetos como el
botn, pues podemos crear tantos botones como queramos y hacer con ellos lo que
decidamos, pero el objetoMouse es nico y acta sobre el ratn del PC del usuario
queveanuestrapelcula.Sepuededecirqueesunobjeto"externo"quepermiteque
otraspartesdelSistemaOperativointeractenconnuestrapelculaFlash.Portanto,es
muypotente.
5. Objeto" Math" (Matemticas):Esunodelosmltiples objetos"abstractos"deFlash,
niesvisual,niparecequecorrespondaanadaexistenteenelsistema(comoelobjeto

ActionScript2.0

10

"Mouse").Sufuncinesmuyimportante,puesnospermiteusarfrmulasmatemticas
demodomuysencillo.
6. Objeto " String" (Cadena): Es otro objeto peculiar, pues corresponde a un tipo de
datos. Los strings o cadenas son secuencias de caracteres. Si definimos una
secuencia de caracteres como objeto de tipo String,podremos usar los mtodos que
Flash implementa sobre ellas: Seleccionar subcadenas de letras, buscar una
determinadaletra en una palabra,convertirla palabra a letras maysculas y un largo
etc.

LASPROPIEDADES
Los Mtodos suelen ser especficos de cada objeto, y su estudio requerira un nuevo curso
completo, (recomendamos consultar la ayuda incorporada en el Flash CS3 cuando surjan
dudas), pero hay bastantespropiedades de los objetos que son comunes a muchos de ellos.
Vamosaverculessonlasmsusadasyqurepresentan.
Para usar las propiedades, se debe colocar el nombre del objeto seguido de un punto ( . ) y
despuslapropiedadysuvalor.Laspropiedadessiemprecomienzanconunguinabajo(_).
Algunas propiedades se pueden escribir sin el nombre del objeto al que hacen referencia
delante,enesecaso,harnreferenciaalapelculaprincipal.
1. _alpha: Hace referencia ala opacidad del objeto al que afecte. La opacidad se puede
definircomolanotransparencia.Demodoqueun100%detransparenciaequivaleaun
0deopacidad,oaun0dealpha.
2. _framesloaded:Sonlosfotogramasdeunclipdepelculaodelapelculaprincipalque
el sistema lleva cargados en memoria. (Si se usa sin nombre de objeto delante
obtenemos los fotogramas cargados de la pelcula principal). Muy til para crear
cargadoreso"preloaders".
3. _totalframes:Devuelvelacantidaddefotogramasquecontieneelclipdepelculaalque
hace referencia. Si se emplea sin ningn nombre delante, nos devuelve la cantidad de
fotogramasdelapelculaFlashactual.Tambinusadoenlacreacindecargadores(en
eltemasiguienteveremoscmoestaspropiedades).
4. _height: Devuelve la altura del objeto en pxeles. Por ejemplo, si tenemos un clip de
pelculallamado"Clip1"yescribimos"Clip1._height"obtendremoslaalturadeClip1.Del
mismomodo,podemoscambiarlasinmsquehacer:Clip1._height=100(laalturadel
Clip1pasaraaserde100pxeles).
5. _width:Propiedadidnticaalaanterior,perodevuelvelaanchura.
6. _visible:Determinasielobjetoestonovisibleennuestrapelcula.Cuando vale1,lo
est,cuandovale0,pasaaserinvisible.Esmuytilparahacerdesaparecerpartesde
una pelcula en un momento determinado. Por ejemplo, si queremos que al pulsar un
botndesaparezcaelclipdepelculallamado"Clip2",haremosesto:.......Clip2._visible
=0.......
7. _x:ConestapropiedadobtenemoslascoordenadasdelobjetorespectodelejedelasX.
Sirve para averiguar la posicin o para asignarla de forma dinmica (durante la
ejecucindenuestrapelculaFlash).
8. _y:ConestapropiedadobtenemoslascoordenadasdelobjetorespectodelejedelasX.
Sirve para averiguar la posicin o para asignarla de forma dinmica (durante la
ejecucindenuestrapelculaFlash).

ActionScript2.0

11

Ejemplo:

Useunbotnpreviamentediseado(odesdelaBibliotecaComn).
Crearunsmbolo(Nombre:CUADRADOTipo:Clip),ydibujeunpequeocuadrado.

Enelescenario,inserteunainstanciadelsmboloCUADRADO,ycoloquecomonombre
deinstancia:cuadro.

Declicalbotn,pulseF9paraactivarelPaneldeAccionesydigite:

ActionScript2.0

12

DEMOSTRACIONDELUSODEACTION
SCRIPT
CDIGOACTIONSCRIPTENBOTONES
Los Botones (objeto Button paraFlash CS3) tienen mucha utilidad siempre que queramos que
nuestra pelcula interacte con el usuario. Dado que esto va a ser prcticamente siempre, es
conveniente estudiar y entender bien algunos cdigos tpicos que tendremos que usar para
conseguirnuestrospropsitos.
TodosloscdigosquemostramosenesteapartadoDEBENinsertarsedentrodelobjetodetipo
Botn(Button)conelqueestemostrabajando.Paraello,seleccionaremoselbotnencuestiny
despus abriremos y editaremos el Panel Acciones, asegurndonos de que ste hace
referenciaanuestrobotn(loindicarlacabeceradeestePanel).
1. Iraotrofotograma
on(release){
gotoAndPlay(15)
}

EstaaccinprovocaquealpulsarunbotnvayamosdirectamentealFotogramanmero
15denuestrapelcula.
LaprimeralneaindicaaFlashCS3que"alpulsarelbotn"hagaloqueestentrelas
llaves " { ... } ". Este cdigo es caracterstico delos botones y nos permite controlar el
pulsado delmismo.Dependiendodeloquecoloquemos entrelosparntesis,laaccin
asociadaalbotn se produciren unmomentooen otro.En estecaso,hemosescrito
"release" que significa quela accin se producir cuando, tras pulsar nuestro botn, el
usuariodejedehacerclicconelratn.
Lasegundalneaeslaaccinqueseproducir.Enestecaso,movemoslacabeza
lectoradeFlashalfotograma15.

ActionScript2.0

13

EnActionScript3:
importflash.events.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
this.gotoAndPlay(15)
}

2. Abrirunaventanadelnavegador

on(release){
getURL("http://www.aulaclic.com","_blank")
}

Estaaccinprovocaque alpulsarunbotn seabraunanuevapginawebennuestro


navegadorpordefectoynosmuestrelapginawww.aulaclic.com
Laprimeralneatienelamismafuncinqueenelcasoanterior
Lasegundalneaeslallamadaalnavegadorwebpropiamentedicha.Los parmetros
indicanladireccinURLquequeremosmostraryelmododeventanaquecontendrala
pginaweb.Enestecaso,seabrirunanuevaventanaindependientedelaactual.
EnActionScript3:
importflash.events.*
importflash.net.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
varmiURL:URLRequest=newURLRequest("http://www.aulaclic.com")
functionmiFuncion(event:MouseEvent):void
{
navigateToURL(miURL,"_blank")
}

3. Cambiandodetamao
on(release){
r1._width=350
}
Esta accin provoca que al pulsar un botn se modifiquen las propiedades del objeto
cuyonombredeinstanciaaparecedelantedelapropiedad.
Laprimeralneatienelamismafuncinqueenelcasoanterior.
En la segunda lneapodemos ver la propiedad ._width (anchura), luego esta llamada
va a acceder a esta propiedad. Vemos que hay un operador asignacin ( = ), luego
deducimosquevamosaasignarunaanchuradeterminadaaunobjeto.Quanchura?
Pues350,queeslacantidadqueapareceenlapartederechadelaexpresin.Yaqu
objeto?Alquevadelantedel".",oloqueeslomismo,alafectadoporlapropiedad.

ActionScript2.0

14

Portanto,alpulsarelbotnvamosamodificarlaanchuradelobjetor1,quepasaraser
de350px.
EnActionScript3:
importflash.events.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
r1._width=350
}

CDIGO ACTIONSCRIPT ENCLIPS


LosClipsdePelcula(objetoMovieClip)sonpelculasdentrodepelculas.Puedentenercdigo
ASdentrodesmismos(aligualquelosbotones),aunquesuelesermscomnquealgnotro
cdigoexterno(situadoenfotogramas)les hagareferencia.Paraqueelcdigoquecontengan
los clips de pelcula sea vlido, stos deben tener algn evento de clip asociado (Load,
KeyDown etc) que determine cundo se ejecutar este cdigo (al cargarse el clip, al pulsar
algunatecla,etc.)

1. Cargandoimgenesopelculas
loadMovieNum("aulaClic.swf",0)
Este cdigo AS situado dentro de un fotograma, provoca que nuestra pelcula Flash
busque una pelcula llamada "aulaClic.swf" EN LA CARPETA RAZ y la cargue en el
nivel0,esdecir,enelmismonivelquelapelculaactual.
La carpeta raz es la carpeta en la que est la pelcula principal (la que tiene este
cdigo).
loadMovieNum("mifoto.jpeg",0)
Este cdigo nos permite cargar en un fotograma una imagen existente en nuestra
carpetarazconextensin.JPEGdeunmododinmico.
Pordinmicoentendemosentiempodeejecucin,loquesignificaqueeltamaodela
pelcula no lo notar, ni tampoco la velocidad de descarga de nuestra pelcula. Slo
cuandohaga faltaver laimagen yseaccedaalfotogramaquerealiceestallamada,se
cargarlaimagenysepodrverenlapelcula.Lacargamosenelnivel0.
Situviramoslaimagenenunacarpetallamada"Imgenes"queseencuentradentrode
nuestrodirectorioraz,podramosaccederaelladelsiguientemodo:
loadMovieNum("Imagenes/mifoto.jpeg",0)
Esconvenienteremarcartambin,quelaimagendebeestarenformato.JPEG,nosirve
elformato.JPG.
2. Iraotrofotograma
Lasiguienteaccindebeincluirsedentrodeunbotn,puessucederalhacerclicsobre
l(deestemodoelejemploesmsprctico).

ActionScript2.0

15

on(release){
r1.gotoAndPlay(2)
}
Partimosdeunapelculacon2fotogramasdistintos.
Enelprimerfotogramaestnelbotnyelclipdepelcula(r1)correspondientes.Elclip
depelculatieneensulneadetiemposunaanimacin,inicialmentedetenida.Veamos
quepasasiseaccedeasufotograma2.
En el segundo fotograma no nos importa lo que haya porque la accin situada a la
izquierda no nos llevar hasta all. La cabeza lectora de la pelcula principal es
INDEPENDIENTE.

Esta accin provoca que al pulsar un botn vayamos al fotograma 2 de un Clip de


Pelculadeterminado.ElfotogramadelapelculaprincipalNOVARIAR.
Laprimeralneaeslacomentadaanteriormente.
Lasegunda lneaes la accin que se producir. Flash busca un objeto llamado r1 de
tipo clip de pelcula (movieclip) y mueve su cabeza lectora hasta el fotograma 2. La
cabezalectoradelapelculaprincipalescompletamenteINDEPENDIENTEdelacabeza
lectoradelosclipsdepelculaynoseveralterada.
EnActionScript3:
importflash.events.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
r1.gotoAndPlay(2)
}
MANEJODESONIDOS
Aunque laidea de objeto no suele llevarnos a pensar en un sonido, enFlash CS3los sonidos
tambinsonobjetosypodemosmanejarlosusandoadecuadamenteActionScript.Veamosunos
cuntoscdigosmuycomunesyuncompletoejemplodecmousarlos:
/*Cdigo1*/

musica=newSound()
musica.loadSound(" sonido.mp3" ,false)
Estas2lneascarganunsonidoyledannombre.
LaprimeralnealediceaFlashquevamosacrearunnuevoobjetodetipoSonidoyqueseva
allamar"musica".
Lasegundalneacargaunsonidodenuestrodiscodurollamado"sonido.mp3"ylocargadentro
delobjetomusica.Elsegundoparmetro"false"indicaqueesunsonidode"evento",yque,por
tanto,secargarcompletamenteantesdecomenzarareproducirse.

/*Cdigo2*/

musica.stop()

ActionScript2.0

16

Estecdigodetieneelsonido"musica"alinstante.
/*Cdigo3*/

musica.stop()
musica.start(0,99)
Laprimeralneacomoyahemosvisto,detieneelsonido"musica".
Lasegundalneaprovocaqueelsonido"musica"comienceareproducirse(start)apartirdesu
posicin inicial (el 0 indica los segundos transcurridos desde el comienzo) y lo haga 99 veces.
(Estosellamaloopobucle).
/*Cdigo4*/

musica.stop()
musica.start(0,0)
Estecdigodetieneelsonido"musica"yacontinuacinloreinicia,reproducindoloslo1vez.
Ahora que ya sabemos controlar los sonidos mediante ActionScript, veamos un ejemplo que
renetodolovistoanteriormente.
Eneste otroejemplo,tenemosun nico fotogramacon3botones.Enestefotogramatenemos
insertadoelCdigo1.Los3botonestienendistintasfuncionalidades:

Enelbotnrojo,estinsertadoelCdigo2
Enelbotnazul,estinsertadoelCdigo3
Enelbotnverde,estinsertadoelCdigo4

USANDOELOBJETOMATH
Comoyasabemos,losobjetosno visiblestambinsecontrolan conActionScript.Vamosaver
algunosejemplosdelfuncionamientodelobjetoMathycomosacarlepartido.

x=Math.random()
El Mtodo "random" del objeto Math genera un nmero aleatorio entre 0 y 1. En este caso, el
resultadoloalmacenamosenlavariablex,parapoderusarlodespus.
Las utilidades de este mtodos son muchas, generar claves secretas, passwords, nmeros de
loteriaetc...
x=Math.round(4,3)

ActionScript2.0

17

ElMtodo"round"REDONDEAelparmetrointroducidoeliminandolapartedecimaldelmismo.
Enelejemplo,xpasaraavaler4.
x=Math.max(5,2)

ElMtodo"max"obtieneelvalormximoentre2nmeros.
Enelejemplo,xpasaraavaler5.
El objeto Math es muy til y nos ahorra mucho trabajo, pues hay multitud de operaciones que
respondenaalgunodesusmtodosynotenemosporquimplementar.
CREANDOUNAPRECARGA
Vamos a analizar el cdigo de un cargador o preloader para acabar de afianzar nuestros
conocimientosdeActionScript:
Los cargadores o preloaders slo son necesarios cuando las pelculas adquieren un tamao
considerable y resulta inviable visionar la pelcula sin tenerla toda cargada (porque se atasca,
aparecenpartesincompletasetc...).Vamosasuponerpues,quetenemosunapelculacon150
fotogramas. Los 3 primeros los reservaremos para crear nuestrocargador. En el Fotograma 4
comienzalapelcula.

NOTA: Junto a cada lnea insertaremos comentarios (texto entre los smbolos /* y */) que son
lneasqueFlashreconocecomotalesyquenotieneencuentaa lahoradeejecutarel cdigo
(escomosinoexistieran).Seusanparaclarificaryexplicarelcdigoqueescribamosyparaeso
lo usaremos a continuacin. Evidentemente no son necesarios en el cdigo que finalmente
insertemosennuestrapelcula.
Esteeselcdigoqueinsertaremos:

HallamoseltamaodenuestrapelculaconlaAccin"getBytesTotal()"yloalmacenamosenla
variablebytes_totales.
/*Fotograma1*/
bytes_totales=getBytesTotal()

Hallamos los bytes que llevamos cargados en memoria hasta el momento. Este valor lo
asignamosalavariablebytes_cargados.
Estaeslalgicadelcargador.Sillevamoscargadosenmemorialosmismosbytesomsdelos
queocupalapelcula,ejecutamoslasiguientelnea.

Si hemos llegado hasta aqu es porque toda la pelcula est cargada en memoria
(bytes_cargados >= bytes_totales) y podemos comenzar a ver la pelcula. Ejecutamos
gotoAndPlay(4)quenosllevarhastaalfotogramadondecomienzalapelcula.
Siaunnohemoscargadotodalapelcula
Averiguamos el porcentaje que llevamos cargado realizando la divisin entre los
bytes_cargadosylosbytes_totalesymultiplicndolopor100
Almacenamosenlavariable"txt_salida"elporcentajequellevamosjuntoalsmbolo"%".Enla
pelculaprincipaltendremosuncampodetextodinmicollamado"txt_salida"quenosmostrar
elporcentajedepelculaquellevamoscargadoencadainstante.

ActionScript2.0

18

/*Fotograma2*/
bytes_cargados=getBytesLoaded()
if(bytes_cargados>=bytes_totales){
gotoAndPlay(4)
}else{
porcentaje=((bytes_cargados/bytes_totales)*100)
txt_salida=Math.floor(porcentaje)+"%"
}

Si llegamos al fotograma 3 es porque no est cargada toda la pelcula, de lo contrario


estaramos ya en el fotograma 4. Como an no est cargada, volvemos al fotograma anterior
para ver si ya lo est (mediante gotoAndPlay(2)). Esto lo haremos tantas veces como haga
faltaparadartiempoalordenadordelusuarioaircargandoenmemorialapelcula.

/*Fotograma3*/
gotoAndPlay(2)

Resumiendo:
Fotograma 1: En el Fotograma 1 se calculan los bytes totales que ocupa la pelcula.
DespuspasamosalFotograma2.
Fotograma 2: Cada vez que accedamos al Fotograma 2, nuestro cdigo ActionScript
averigua los bytes que llevamos cargados en memoria y los compara con los totales
(que sehallaronen elFotograma1ynovuelvenaaveriguarse,puesno varan).Siya
est toda la pelcula cargada, vamos al fotograma 4 y comenzamos a reproducir la
pelcula,sino,pasamosalfotograma3
Fotograma 3: El Fotograma 3 volver a mandar la cabeza lectora al fotograma 2.
Haciendo esteciclo,damostiempoal ordenadorair cargandopocoapocola pelcula,
hasta que llegue un momento que est toda cargada y pasemos al Fotograma 4. El
clculo del porcentaje es un "adorno" que nos permitimos, pues con un poco ms de
esfuerzoaveriguamoscuntapelculallevamoscargadaylamostramosporpantallade
unmodoelegante(enporcentaje)haciendolaesperadelusuariomenosaburrida.
Fotograma 4: Aqu comienza la pelcula... (Ya no se volver nunca a ninguno de los
fotogramasanteriores).
Aladerecha mostramoselresultado.Lapelculase comenzaracargaralpulsarelbotn. El
cdigoinsertadoesEXACTAMENTEelquesemuestraarriba,nohayNADAMS.Tanslo
se han aadido unos textos y unas imgenes para aumentar el tamao de la pelcula, de lo
contrariolacargaserademasiadorpidaynollegaraaverse.
Tambinsehainsertadoeltextodinmicoquemuestraelporcentaje.
Sielcargadornollegaaverse,lomsprobableseaqueyaestcargadaenlamemoriacach
delcomputador,dondelavelocidaddedescargaestanrpidaqueseranecesariaunapelcula
devariosMBytesparaquehicierafaltauncargador.

ActionScript2.0

19

NAVEGACION EN FLASH USANDO


ACTIONSCRIPT
Enestetemaveremoslospuntosmsimportantesenlosquetepodrsapoyarpararealizartus
animacionesenFlashusandoActionScript.
La Navegacin est especialmente orientada a la web, pues veremos cmo crear elementos
que ayudarn ms tarde a crear presentaciones, secciones, etc. Todo ello apoyado con
animacionesyvinculadasentres.

ActionScript2.0

20

LOSBOTONES
Unodeloselementosquemsnosvanaayudaralahoradeaadirinteractividadeneldiseo
son los botones. En el ejemplo nos hemos ayudado de los botones para crear la navegacin
entrelasdiferentessecciones.

As que el primer paso, despus de haber creado la interfaz de la pelcula en una capa, ser
creareinsertarlosbotonesenunanuevacapaparatrabajarconmayorfacilidad.
Paraasignarleunaaccinaunbotnesnecesariodarleunnombredeinstancia.Paraello
(ycomo hemos vistoenunidadesanteriores)escribimoselnombreque queramos (alcualnos
referiremos ms tarde para llamar al botn) en el Inspector de Propiedades, en este caso lo
hemosllamadomiboton1.

Luego, con el botn seleccionado, abrimos el Panel Acciones y aadiremos el cdigo que
deberrealizarelbotn.
sta es la parte ms importante pues deberemos decidir a qu estmulo (o evento)
responder el botn. Existen varios eventos que son capturados en Flash, nombraremos los
msimportantes:

press:ejecutalaaccinalpresionarseelbotn.
release:ejecutalaaccinalsoltarseelbotn(despusdehaberlopresionado).
rollOver:ejecutalaaccinaldesplazarelratndentrodelbotn.
rollOut:ejecutalaaccinaldesplazarelratnfueradelbotn.

Porello,escribiremosenelpanelaccioneselsiguientecdigoparanuestrosbotones:
on(release){
}

Nota: ActionScript diferencia entre maysculas y minsculas, por lo que si escribes, por
ejemplo,Releasenoserreconocido.

ActionScript2.0

21

Entrelasllaves{}introduciremoselcdigoquequeremosqueseejecutealproducirseelevento
seleccionadosobreelbotn.

EnActionScript3:
importflash.events.*
miboton1.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
}

MANEJADORESDEEVENTOENBOTONES
Puedes manejar otros eventos adems de los mencionados anteriormente (press, release,
rollOveryrollOut),ysonlossiguientes:

dragOut: se ejecuta cuando se presiona el botn y, sin soltarlo, el ratn se desplaza


fueradel.
dragOver: se ejecuta cuando se presiona el botn y, sin soltarlo, el ratn se desplaza
fueradelparaluegovolverasituarsesobreste.
releaseOutside: se ejecuta cuando se presiona el botn y, sin soltarlo, el ratn se
desplaza fuera de l y luego se suelta el botn del ratn. Observa que antes de
producirseesteeventosehanproducidoantesloseventosreleaseydragOut.

Siguiendolamismasintaxispuedesaadirunmanejadordeeventosdeteclado:
on(keyPress){
}
Deestemodo,sisepulsaseunatecladeterminadaseejecutaraunaaccin:
on(keyPress){
if(Key.getCode()==Key.RIGHT){
//ejecutarcualquieraccin
}
}
Enesteejemplo,cuandoseproduceunapulsacindeteclaseevalaenlasegundalnea.Sila
teclapulsadaeslaflechaDerechaseejecutarlaaccindeterminada.

ActionScript2.0

22

CONTROLESDELALINEADETIEMPO
Unavezinsertadoslosbotonesydefinidosloseventossobre losquedeben actuar,tendremos
quedecidirququeremosquehagan.
Deestaformapodremoscreardinamismoentrenuestrassecciones.
Imaginaquetenemoslasiguientelneadetiempo:

ObservalacapaContenido.Enellaseencuentrantodoelcontenidodelassecciones.Deesta
forma, si no aplicsemos ninguna accin sobre la lnea de tiempo, todas las secciones se
ejecutaranunaseguidadelaotra.Loquequeremosconseguiresquese ejecute laprimera
(para mostrar la seccin principal) y el cabezal se pare hasta nueva orden (para mostrar la
segunda).Paraelloutilizaremoslafuncinstop().
Esta funcin sirve para parar el cabezal de la lnea de tiempo donde sea colocada. As que
seleccionamoselltimofotogramadelaseccinyabrimoselPanelAcciones.
Alldeberemosescribirnicamentelalnea:
stop()
Esto har que cuando la animacin llegue a ese punto se detendr a espera de nueva orden.
Nosotros hemos colocado las acciones en una capa aparte llamada Acciones para as poder
acceder ms rpido a ella. El mtodo es el mismo, solamente habr que crear fotogramas
clavesenaquellossitiosenlosquequeramosinsertarunstop().
Ya hemos conseguido detener la presentacin. Pero, cmo hacemos que se muestre la
segunda?Muysencillo.
Losbotonesnosayudarnadesplazarelcabezalporlalneadetiempo.Asquemodificaremos
elcdigodeunodelosbotonesdondehabamosescrito:
on(release){
}
Paraquesepuedaleerlosiguiente:
on(release){
gotoAndPlay(21)
}

Deestaforma,alhacerclicsobreesebotn,elcabezaldereproduccinsedesplazarhasta
elfotograma21yreproducirapartirdeall.

ActionScript2.0

23

EnActionScript3:
importflash.events.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
gotoAndPlay(21)
}

Siaadimosunstop()enelltimofotogramadelasegundaseccin,cuandostesereproduzca
separaryelcontenidopermanecerestticoenesperadeunanuevaorden.Existeotraforma,
muytil,paranombrarlosfotogramas.Delmismomodoquedbamosunnombredeinstanciaa
unbotnloharemosconunfotograma.
BastaconintroducirunaEtiquetadefotogramaparapoderremitirelcabezalaste:

Porejemplo:
on(release){
gotoAndPlay("impresoras")
}

EnActionScript3:
importflash.events.*
miboton1.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
gotoAndPlay("impresoras")
}

ActionScript2.0

24

Ademsdeestoscontroladorespodemosutilizartambin:

gotoAndStop(fotograma), que situar el cabezal en elfotogramaindicado y parar la


reproduccin.

play(),queharquelareproduccinprosigaenelfotogramaenelque seencuentreel
cabezal.

prevFrame(), que har que el cabezal retroceda al fotograma anterior al que nos
encontramos.

nextFrame(), que har que el cabezal avance al fotograma siguiente al que nos
encontramos.

ExistenloscontroladoresprevScene() ynextScene()quehacenavanzarelcabezalaescenas
anterioresosiguientes.Asqueveremosqusonlasescenasparapoderutilizarlostambin.

LASESCENAS
Flashpermiteelusodeescenasparaseparardiferentestemasenunasolapelcula.Sesuelen
utilizarsobretodoenanimaciones,dondeunapartedelaaccintranscurresobreunfondoyla
siguientesobreotrocompletamentediferente.
Deestemodopodemosusarlasescenaspararepresentardiferentesseccionesmuydiferentes
en nuestra pelcula, por ejemplo, crear una escena para el cargador, otra para la pelcula
principal y unatercera para una seccin que se diferencie completamente del resto y nos sea
mscmodotrabajarconellaindependientemente.
Apesardelhechodequelasescenassetrabajancomolneasdetiempodiferentes,alcrearel
archivoSWFstassealineanenordenreproducindoseunadetrsdeotra.
Porello,alpublicareldocumentolosfotogramasdelasescenassenumerarnrespectoaesto.
Es decir, si tenemos una primera escena que va del fotograma 1 al 50, la segunda escena
comenzarenelfotograma51.
Todo esto hace que las escenas, en algunos casos estn desaconsejadas por las siguientes
razones:

Elusodeescenas obligaal usuario adescargareldocumentoensutotalidad,apesar


dequeesposiblequenonavegueportodaslas secciones.Existe laposibilidad,como
veremos ms adelante, de cargar en cualquier momento archivos SWF para
reproducirlosenlapantallaprincipal.Deestaformaemularamoselusodelasescenas
cargandodiferentesdocumentosdependiendodelaseccinamostrar.

Cuando aadimos ActionScript a nuestras escenas el resultado puede ser, a veces,


imprevisible.Comohemosexplicadoanteriormente,alcrearseunarchivoconunalnea
detiempocontinualasaccionesarealizarpuedenserinesperadas.

En el Panel Escena (Men Ventana, Otros paneles,


Escena) podrs ver las escenas actuales de la
pelcula.

ActionScript2.0

25

Enprincipiosolamenteencontrarsuna(Escena1),esposibleaadirmsescenaspulsandoel
botn Aadir escena
. Para cambiar el nombre de una escena haz doble clic sobre su
nombre en el panel y escribe el que quieras. Puedes eliminar una escena utilizando el botn
Eliminarescena

oduplicarlaconelbotnDuplicarescena

Como hemos comentado antes (y si no existe cdigo ActionScript que modifique esto) las
escenassereproducenunadespusdelaotraenelordenenelqueseencuentranenelPanel
Escena. Puedes cambiar este orden con solo arrastrar y colocar la escena en cuestin en su
lugarcorrespondiente.
Trabajarconunaescenaesmuysencillo,bastaconseleccionarlaenelpanelysucontenidose
mostrar en el Escenario. Podrs trabajar con ella como si se tratase de una pelcula
independiente.
PeroveamoscmopodemosutilizarActionScriptparadesplazarnosdeescenaaescena.Antes
hemos mencionado las funciones prevScene() y nextScene(). Estos comandos hacen que el
cabezaldereproduccinsedesplacedeunaescenaaotraenelordenenelqueseencuentran
enelPanelEscena.
Pero existe otra posibilidad. Segn el ejemplo que estamos siguiendo creamos una nueva
escenallamadaescena_otros .EnelbotnEnlaceRecomendadohemosaadidoelsiguiente
cdigo:
on(release){
gotoAndPlay("escena_otros",1)
}

EnActionScript3:
importflash.events.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
gotoAndPlay("escena_otros",1)
}
Conestoestamosindicandoquealsoltarseelbotnelcabezalsedesplacealfotograma1dela
escenaescena_otros yempieceareproducirseapartirdeall.
LOSMOVIECLIPS
Podemosutilizarlosparaincluirelementosennuestrapelculaconunaanimacinindependiente.
Deestemodoaunquelapelculaprincipalestdetenidaelclipseguiractuandosegnsupropio
cabezaldereproduccin.
Existenmtodos paramanejarla lneadetiempodelosclips, idnticasalasanteriores, yque
veremosacontinuacin.
Loprimeroquedeberemosaprenderesaaccederalaspropiedadesymtodosdelosobjetos.
Estoesunrecursomuyutilizadoperoalavezesmuysencillo.

ActionScript2.0

26

Ejemplo:
Queremos que al pulsar un botn el movieclip avance en su lnea de tiempo hasta su
fotograma20.Elcdigoquedeberemosescribirenelbotnserelsiguiente:
on(release){
miClip.gotoAndPlay(20)
}

Fjate en cmo hemos escrito lafuncin. Primero hemos sealado el clip sobre el que
queremosactuarescribiendosunombredeinstancia:

Ydespusdeaadirunpuntohemosindicadolafuncinqueseejecutar.
EnActionScript3:
importflash.events.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
miClip.gotoAndPlay(20)
}
De esta forma (y como hemos visto en temas anteriores) podemos acceder a todas las
propiedadesdelclip.Escribiendoestalneaharemosqueelclipsehagainvisible:
on(release){
miClip._visible=false
}

EnActionScript3:
importflash.events.*
miBoton.addEventListener(MouseEvent.CLICK,miFuncion)
functionmiFuncion(event:MouseEvent):void
{
miClip._visible=false
}

ActionScript2.0

27

Para hacerlo un poco ms complicado podramos encontrarnos en el siguiente supuesto.


ImaginaquetenemosunmovieclipllamadoclipPadre.Dentrodeesteclipdepelculatendremos
mssmbolosyunodeellospuedeserotromovieclipllamadoclipHijo .
Cmo accedemos a las propiedades y funciones de clipHijo ? Muy fcil. Suponiendo que
estamos trabajando desde la pelcula principal donde tenemos insertado el clipPadre,
escribiremoslosiguiente:
clipPadre.clipHijo.play()
AsharemosquelareproduccindeclipHijo sereaunde.
Pero,qupasasiqueremosejecutarlaordendesdedentrodeclipPadre?Imaginaquedentro
delmoviecliphayunbotnyelclipclipHijo .Queremosquealpulsarelbotnsereproduzcael
fotograma20declipHijo ,entoncesdeberamosescribirlosiguienteenlasaccionesdelbotn:
on(release){
clipHijo.gotoAndPlay(20)
}
Como puedes ver esta vez no hemos mencionado a clipPadre en la lnea de cdigo. No es
necesarioporqueyanosencontramosdentrodel.
Tambin podemos referenciarnos a elementos superiores utilizando la palabra reservada
_parent. De este modo si nos encontrsemos dentro de clipHijo y quisisemos avanzar al
fotograma20declipPadredeberamosescribir:
this._parent.gotoAndPlay(20)

Donde this indica el clip donde nos encontramos y _parent hace que nos coloquemos en el
nivelinmediatamentesuperior.
Deestaforma,slodeberemosescribirla rutadecontenedoresopadreshastallegaralobjeto
delcualqueremosmodificaroejecutarunmtodo.
Por lo dems, el funcionamiento de un clip no se diferencia en nada a la lnea de tiempos de
cualquier otra pelcula. Podemos etiquetar los fotogramas de igual modo para llamarlos
directamenteporsunombre:
miClip.gotoAndStop("etiqueta")

Y saltar de fotograma afotograma para manejarlas animaciones de laforma en que nosotros


queramos.
Igual que vimos antes con los botones, los movieclips tienen manejadores que nos permitirn
ejecutarcdigodependiendodeloseventosqueseproduzcansobreellos.

ActionScript2.0

28

Losquemsutilizaremossern:

mouseMove: se ejecuta cuando el ratn se mueve sobre elfotograma. Puedesutilizar


las propiedades _xmouse e _ymouse para averiguar la posicin del ratn en ese
momento.
mouseDown:seejecutacuandosepresionaelbotndelratn.
mouseUp:seejecutacuandosesueltaelbotndelratn.
keyDown:seejecutacuandosepresionaunatecla.
keyUp:seejecutacuandosesueltaunatecla.

EstosmanejadoresdeeventossedebendeutilizarconelcontroladoronClipEvent.Veamosun
ejemplo:
onClipEvent(mouseUp){
this._visible=true
}
Estebloquedecdigodebe situarseenlasacciones delmovieclip(igualquehacemosconlos
botones). Es por ello que al referirnos a la propiedad _visible escribimos antes this para
referenciarelclipencuestion.
thissiempreharreferenciaalobjetodondeseencuentrelavariable.
Nota: Estos manejadores son tan vlidos para movieclips como para la pelcula general en s,
puespodramosconsiderarqueunapelculaesunmovieclipmsgrande.
Tambin existen modos de capturar estos eventos sin tener que escribir el cdigo dentro del
movieclip.
Seradelasiguienteforma:
miClip.onPress=function(){
miClip.play()
}

Estos eventos tienen que asociarse con una funcin (veremos este concepto en el punto
siguiente). Pero de esta forma podemos escribir el cdigo directamente sobre el fotograma y
controlarcuandoseejecutaunaaccinsobreelmovieclip.
Enelejemplo,elclipcomenzarareproducirseencuantosehagaclicsobrel.
Veamoselconjuntodeeventosmsimportantesparalosmovieclips:

onPress = function() {}: se ejecuta cuando se presiona el botn del ratn sobre el
movieclip.
onRelease = function() {}: se ejecuta cuando se suelta el botn del ratn sobre el
movieclip.
onRollOver = function() {}: se ejecuta cuando se desplaza el ratn dentro del
movieclip.
onRollOut=function(){}:seejecutacuandosedesplazaelratnfueradelmovieclip.
onKeyDown = function() {}: se ejecuta cuando se presiona una tecla con el clip de
pelcularesaltado.
onKeyUp=function(){}:seejecutacuandose sueltaunateclaconelclipdepelcula
resaltado.

ActionScript2.0

29

LasVariables
Las variablessoncontenedoresdondepodremosalmacenarinformacinparatrabajarconella.
Estainformacinpuedesermodificadayleda.
Aunquepareceunconceptomuycomplejosuusoesbastantesencillo.
En ActionScript existen 8 tipos diferentes de variables, los que ms utilizaremos sern los
siguientes:

Boolean: o booleano, puede almacenar slo dos valores, o true (verdadero) o false
(falso).
Number:puedealmacenarnmerosenterosodecimales,positivosonegativos.Elsigno
decimal en ActionScript es el punto (.). Podrs realizar operaciones matemticas con
estasvariables.
String: puede almacenar cadenas de caracteres, es decir, un conjunto de caracteres
alfanumricos.LasvariablesdetipoStringdebenirentrecomillasdobles(").

Paradeclarar(crear)unavariableslotendrsqueescribirlasiguientelnea:
var nombreVariable:tipoVariable=valorVariable
Veamoselejemploparaverlomsclaro.Haremosqueelclicsobreelmovieclipestrellaslose
ejecutesieldetallenoestanmostrado.
Yalrevs.Quesloseejecuteelcdigoalhacercliceneldetallesisteseencuentrafuera.
varestrella_activada:Boolean=true
estrella.onPress=function(){
if(estrella_activada==true){
estrella.gotoAndPlay("desaparece")
detalle.gotoAndPlay("aparece")
estrella_activada=false
}
}
detalle.onPress=function(){
if(estrella_activada==false){
estrella.gotoAndPlay("aparece")
detalle.gotoAndPlay("desaparece")
estrella_activada=true
}
}

Fjateenlasdosprimeraslneas,sedeclarandosvariablesbooleanas.Unadicequelaestrella
seencuentraactivadaylaotraqueeldetalleseencuentradesactivado.

ActionScript2.0

30

EnActionScript3:
importflash.events.*
varestrella_activada:Boolean=true
estrella.addEventListener(MouseEvent.CLICK,funcion_desaparece)
functionfuncion_desaparece(event:MouseEvent):void
{
if(estrella_activada==true){
estrella.gotoAndPlay("desaparece")
detalle.gotoAndPlay("aparece")
estrella_activada=false
}
}
detalle.addEventListener(MouseEvent.CLICK,funcion_aparece)
functionfuncion_aparece(event:MouseEvent):void
{
if(estrella_activada==false){
estrella.gotoAndPlay("aparece")
detalle.gotoAndPlay("desaparece")
estrella_activada=true
}
}
Alhacerclicenelmovieclip estrellaseevalalavariableestrella_activadasistaesverdadera
(true)entoncespermitequeserealicenlasacciones.Encasocontrario,saledelacondicin.
Alentrarenlacondicinsedesplazanloscabezalesysemodificaelvalordelavariableafalso
paraquelaprximavezqueintenteentrarnopuedanejecutarselasacciones.
En elonPressdelclipdetallese evala de nuevo la variable.Esta vez debera estar en false
porquesieldetalleestfueraesporqueyasehahechoclicsobrelaestrellayhapasadoporel
anteriorbloque.
Amedidaquevayamosavanzandoiremosusandootrasvariablesdediferentestipos.Versque
suusonodifieremuchoalquehemosexplicadoahora.
Antes de terminar con este tema deberamos ver algo muy importante: el mbito de las
variables.
Estoes,elsitiodondepuedanutilizarselasvariables.
Nota:Paraexplicarelmbitodelasvariablesutilizaremoslafuncintrace(variable)queenva
elcontenidodelavariablealPanelSalida.PuedesabrirestepaneldesdeVentanaSalida.
Existen3mbitosdevariables:ellocal,elglobalyeldelneadetiempo.
Las variables declaradas en la lnea de tiempo pueden utilizarse en cualquier fotograma
posteriorysucontenidosemantendrintacto.
Porejemplo,declaramoslasiguientevariableenelfotograma1:
varmiVariable:String="Estaesmivariable"

ActionScript2.0

31

Yenelfotograma15colocamoslassiguienteslneasenelPanelAcciones:
trace(miVariable)
stop()
Vers como al probar la pelcula en el Panel de Salida aparece escrito el contenido de la
variable.
Tenencuentaquesideclaraslavariableenelfotograma2noestardisponibleenfotogramas
anteriores,esdecirenel1.
Las variables declaradas en un mbito local sirven slo para un bloque de funcin. Veamos
esteejemplo:
functionmiFuncion(){
varmiVariable:Number=1
trace(miVariable)
miVariable=2
trace(miVariable)
}
miFuncion()
trace(miVariable)

En el primer bloque definimos una funcin (hablaremos de ellas ms a fondo en el siguiente


apartado).
En esta funcin se declara una variable y se enva su contenido al Panel Salida. Luego
modificamoselcontenidodelavariableyvolvemosaenviarelcontenidoaSalida.
Observaquedespusllamamosalafuncin,estoharqueseejecutesucdigo,porloqueen
elPanelSalidasemostrar1y2.
Luego intentamos enviar el contenido dela variable aSaliday el resultado que obtenemos es
undefined .Estoesporquelavariablenoestdefinida,puessolamentelahabamosdeclarado
paraelbloquedelafuncin.
Utilizandolasvariablesdeestaformaslopodremosaccederaellasdesdeelbloquedefuncin
dondeestndeclaradas.Unavezfueradestelasvariablesdejandeexistir.
Las variables de mbito global son mucho ms flexibles, estn disponibles en cualquier
fotogramayfuncin.
Sumododedeclaracineslasiguiente:
_global.miVariable=" Estaesunavariableglobal"
Podrsaccederaellaencualquiermomento.
Lasvariablesglobalesnotienentipo,ypuedentomarcualquiervalor.
Nota:Sienalgnsitiodeclarasunavariablelocalconelmismonombrequeunavariableglobal
existentenopodrsutilizarlaglobaldurantetodoelmbitoenelqueexistalalocal.

ActionScript2.0

32

Comentaremos tambin la existencia de las variables de tipo matriz (o array). stas pueden
almacenardiferentesvariablesenunsoloobjeto.
Veamosunejemploparaverlomsclaro:
var miMatriz:Array=newArray()
miMatriz[0]="Lunes"
miMatriz[1]="Martes"
miMatriz[2]="Mircoles"
miMatriz[3]="Jueves"
miMatriz[4]="Viernes"
miMatriz[5]="Sbado"
miMatriz[6]="Domingo"
Assiescribimos:
Trace(miMatriz[5])

SemandaralPanelSalidaelelemento5delarraymiMatrizenestecasoSbado .
Los arraysempiezanpor0,asqueesconvenientequeteacostumbresarellenarlamatriz a
partirdeesteelemento.Versqueconeltiempoteayudararealizaralgunasfunciones.
Otrasformasdedeclarararrayssonlassiguientes:
varmatriz2:Array=new Array("Lunes","Martes","Mircoles","Jueves","Viernes","Sbado",
"Domingo")
O
varmatriz3:Array=["Lunes","Martes","Mircoles","Jueves","Viernes","Sbado","Domingo"]

AcontinuacinveamosotroejemplodelusodeArrays:
varmiMatriz:Array=["Lunes","Martes","Mircoles","Jueves","Viernes","Sbado","Domingo"]
vari:Number
for(i=0i<7i++){
trace(miMatriz[i])
}
Estebloquedecdigoejecutaunbucleutilizandolasentenciafor.

ActionScript2.0

33

Esta sentencia requiere de un valor inicial, una condicin que mientras se cumpla seguir
realizandoelbucleyunmtododeactualizacindelvalor.
for(valorInicialcondicionmetodoActualizacion){
Bloquedeinstrucciones
}
En el ejemplo hemos definido un bucle de 0 hasta 6 (que es el ltimo nmero que cumple la
condicinmenorque7)yquevayaaumentandodeunoenuno(i++).
As el bucle se realizar 7 veces mostrando primero el elemento 0 de la matriz, luego el
elemento1,luegoel2yashastallegaral6.
PulsaelbotnAceptary elcdigoActionScript segenerarsolo.Notendrsquehacernada
ms.

LasFunciones
Como habrs visto en los ejemplos anteriores, una funcin es un bloque de cdigo que
podemosutilizarencualquierpartedelarchivoSWFconslollamarla:
functionmiFuncion(){
varmiVariable:Number=1
trace(miVariable)
}
EnesteejemplohemoscreadounafuncinqueenvaelcontenidodelavariablemiVariableal
PanelSalida.
Podemosescribirlasiguientelneaencualquiermomentodespusdehaberpasadolafunciny
estaseejecutar:
miFuncion()
Comoves,crearfuncionesesbastantesencillo.Ademspodemoscrearfuncionesunpocoms
complejasenvindoleparmetros:
functionenviaSalida(miVariable:String){
trace(miVariable)
}
Siencualquiermomentoescribimos:
enviaSalida("Hola!")
SemostrarelmensajeenelPanelSalida.

ActionScript2.0

34

El modo de crear funciones con parmetros es bastante intuitivo. Al crear la funcin debers
indicar que tipo de variable le vas a enviar. En nuestro ejemplo hemos definido el parmetro
comodetipoString.
DeestemodopodrsutilizarlavariablemiVariabledentrodelafuncinytrabajarconellacomo
quieras.
Parallamaralafuncinslodebersescribirsunombreyindicarleelparmetroquelequieres
enviar.
Puedescrearfuncionesconmsdeunparmetro,paraelloslotendrsquesepararstospor
comas:
functionmiFuncion(parametro1:String,parametro2:Number,parametro3:Boolean){
//cdigo
}

CARGANDOARCHIVOS
Una vez vistos todos estos conceptos pasaremos a ver una funcin en concreto, la funcin
LoadMovie.
Esta funcin te permite modificar el contenido de un clip de pelcula y cargar en l otro
archivoSWFoinclusounaimagenconformatoJPG,GIFoPNG.
Suusoeselsiguiente:
miMovieClip.loadMovie("pelis/clip.swf")
Con esto lo que hemos hecho es cambiar el contenido del clip miMovieClip y lo hemos
sustituidoporelarchivoclip.swf queseencontrabaenlacarpetapelis .Essencillo,verdad?
Tambinpuedesutilizarladeestaforma:
loadMovie("archivo.swf",miMovieClip)
Esunavariacindelaanterior,aquindicamosquarchivoqueremoscargarydnde.Sienvez
de cargarlo en miMovieClip lo cargasemos en this se cargara en el clip en el que est
contenidalafuncin.Inclusosisteeselclipdepelculaprincipal.
Elcdigoquehemosinsertadoenelbotnessencillo:
on(release){
loadMovie("mapa.swf",this)
}
Losparmetrosquelehemospasadosonelnombredelapelculaacargarysudestino(this,el
propioclipdondeestabaelbotn).
Unalneaequivalentehubiesesidoesta:
this.loadMovie("mapa.swf")

ActionScript2.0

35

ParadescargararchivoscargadosconlafuncinloadMovieutilizaunloadMovie.
Estonosservirparaliberaraunmovieclipdelapelculaoimagenquehabamoscargado,
dejndolovaco.
Susintaxiseslasiguiente:
miClip.unloadMovie()
o
unloadMovie(miClip)

Existe la posibilidad de cargar archivos de otra manera, en vez de indicando su destino


indicaremos su nivel. Esto es, vamos a cargar varios archivos en un mismo sitio y los
dispondremos uno encima de otro, de forma que los que se encuentren en capas superiores
taparnalosdeabajo.
ParaellodeberemosutilizarlafuncinloadMovieNum:
loadMovieNum("primera.swf",0)
loadMovieNum("segunda.swf",1)
loadMovieNum("tercera.swf",2)
Enesteejemplohemoscargado3archivosSWFenelmismositio.Lostresestarndisponibles
alavez,perolapelculatercera.swfserlaqueseencuentreenelnivelsuperior.
Como puedes ver, al no poder indicarse un destino, debersintroducir estafuncin dentro del
clip que quieres modificar. Si fuese escrita en el cdigo del fotograma actuara directamente
sobrelapelculaprincipal.
Nota:Laspelculascargadasenelnivel0sernlasqueestablezcanlavelocidadytamaode
fotogramas y su color de fondo para el resto de los fotogramas aadidos en niveles
superiores.
Podemos referirnos a pelculas cargadas en diferentes niveles y modificar sus propiedades
utilizandolasintaxis:
_level1._visible=true
Einclusollamaraobjetoscontenidosenesaspelculasaadiendo, simplemente,elnombrede
instanciadeste:
_level1.miClip._visible=true

Podemos descargar pelculas cargadas con la funcin loadMovieNum utilizando


unloadMovieNum:
unloadMovieNum(2)
En esta funcin slo debemos indicar el nivel donde est situada la pelcula que queremos
descargarycadams.
El uso de estas funciones es bastante sencillo y te ayudarn mucho en la eficiencia de tus
pelculas.Tenencuentaloquedecamosantesdelasescenas.

ActionScript2.0

36

También podría gustarte