Operadores de comparación

Los operadores de comparación comparan los valores de las expresiones y devuelven un valor Booleano (true o false). Estos operadores se utilizan con mayor frecuencia en los bucles y en las sentencias condicionales. En el ejemplo siguiente, si la variable score es 100, se carga un película determinada; en caso contrario, se carga una película diferente:

if (score > 100){
      loadMovieNum("winner.swf", 5);
} else {
      loadMovieNum("loser.swf", 5);
}
 

En la tabla siguiente se enumeran los operadores de comparación de ActionScript:

Operador

Operación realizada

<

Menor que

>

Mayor que

<=

Menor o igual que

>=

Menor o igual que

 

Operadores lógicos

Los operadores lógicos comparan los valores booleanos (true y false) y devuelven un tercer valor booleano. Por ejemplo, si ambos operandos son true, el operador lógico AND (&&) devuelve true. Si uno o ambos operandos son true, el operador lógico OR (||) devuelve true. Los operadores lógicos se utilizan con frecuencia junto con los operadores de comparación para determinar la condición de una acción if. Por ejemplo, en el siguiente script, si ambas expresiones son verdaderas, la acción if se ejecutará:

if (i > 10 && _framesloaded > 50){
      play();
}

En la tabla siguiente se enumeran los operadores lógicos de ActionScript:

Operador

Operación realizada

&&

AND lógico

||

OR lógico

!

NOT lógico

 

Utilización de acciones

Las acciones son sentencias de ActionScript o comandos. Si se asignan varias acciones al mismo fotograma u objeto se crea un script. Las acciones pueden actuar independientemente unas de otras, como se muestra en las siguientes sentencias:

mc1.swapDepths(mc2);
gotoAndPlay(15);
 

También puede anidar acciones utilizando una acción dentro de otra, lo que permite que las acciones afecten unas a las otras. En el siguiente ejemplo, la acción if indica a la acción gotoAndPlay cuándo debe ejecutarse:

 

if (i >= 25) {
      gotoAndPlay(10);
}

Las acciones pueden mover la cabeza lectora en la línea de tiempo (gotoAndPlay), controlar el flujo de un script creando bucles (do while) o lógica condicional (if), o crear nuevas funciones y variables (function, setVariable).

 

 En la siguiente tabla se muestra una lista de las acciones de ActionScript:

break

#endinitclip

loadMovie

printAsBitmap

switch

call

evaluate

loadMovieNum

printAsBitmapNum

tellTarget

call function

for

loadVariables

printNum

toggleHighQuality

case

for..in

loadVariablesNum

removeMovieClip

trace

clearInterval

fsCommand

method

return

unloadMovie

comment

function

nextFrame

set variable

unloadMovieNum

continue

getURL

nextScene

setInterval

updateAfterEvent

default

gotoAndPlay

on

setProperty

var

delete

gotoAndStop

onClipEvent

startDrag

with

do while

if

play

stop

while

duplicateMovieClip

ifFrameLoaded

prevFrame

stopAllSounds

 

else

include

prevScene

stopDrag

 

else if

#initclip

print

swapDepths

 

 

if (password == null || email == null) {
      gotoAndStop("reject");
}     else if (password == userID){
      gotoAndPlay("startMovie");
}

 

Utilización de funciones incorporadas

Una función es un bloque de código ActionScript que puede volver a utilizarse en cualquier parte de una película. Si pasa valores a una función como parámetros, la función actuará sobre esos valores. Una función también puede devolver valores.

Flash incorpora funciones que permiten acceder a un tipo determinado de información y realizar determinadas tareas, tales como obtener el número de versión de Flash Player que alberga la película (getVersion). Las funciones que pertenecen a un objeto se denominan métodos. Las funciones que no pertenecen a un objeto se denominan funciones de nivel superior y se encuentran en la categoría Funciones del panel Acciones.

Cada función tiene sus propias características y algunas necesitan que se le pasen determinados valores. Si se pasan a la función más argumentos de los que necesita, se pasarán por alto los valores. Si no se le pasa un argumento necesario, los argumentos vacíos se asignarán al tipo de datos undefined, que puede causar errores cuando exporte un script. Para llamar a una función, ésta debe encontrase en un fotograma al que haya llegado la cabeza lectora.

En la tabla siguiente se indican las funciones de nivel superior incorporadas en Flash.

Boolean

getVersion

parseInt

escape

isFinite

String

eval

isNaN

targetPath

getProperty

Number

unescape

getTimer

parseFloat

 

Definición de una función

Las funciones, al igual que las variables, están asociadas a la línea de tiempo del clip de película que las define, y para llamarlas debe utilizarse una ruta de destino. Al igual que con las variables, puede utilizarse el identificador _global para declarar una función global que está disponible para todas las líneas de tiempo sin utilizar una ruta de destino. Para definir una función global, debe anteponer el identificador _global al nombre de la función, como se muestra a continuación:

_global.myFunction = function (x) {
   return (x*2)+3;
}
 

Para definir una función de línea de tiempo, utilice la acción function seguida del nombre de la función, los parámetros que va a pasar a la función y las sentencias de ActionScript que indican qué acción lleva a cabo la función.

A continuación se muestra una función denominada areaOfCircle con el argumento radius:

 

function areaOfCircle(radius) {
      return Math.PI * radius * radius;
}
 

Nota: la palabra clave this, utilizada en el cuerpo de una función, hace referencia al clip de película al que pertenece la función.

También puede definir una función creando un literal de función, es decir, una función sin nombre que se declara en una expresión, no en una sentencia. Puede utilizar la expresión literal de una función para definir una función, para devolver su valor y asignarlo a una variable en una expresión, como se muestra a continuación:

 

area = (function() {return Math.PI * radius *radius;})(5);
 
Cuando se vuelve a definir una función, la nueva definición sustituye a la definición anterior. 
 

Devolución de valores de una función

Puede utilizar la acción return para devolver valores desde las funciones. La acción return detiene la función y la sustituye por el valor de la acción return. Si Flash no encuentra una acción return antes del final de una función, devolverá una cadena vacía. Por ejemplo, la siguiente función devuelve el cuadrado del parámetro x:

function sqr(x) {
      return x * x;
}
 

Algunas funciones realizan una serie de tareas sin devolver un valor. Por ejemplo, la siguiente función inicializa una serie de variables globales:

 

function initialize() {
      boat_x = _root.boat._x;
      boat_y = _root.boat._y;
      car_x = _root.car._x;
      car_y = _root.car._y;
}
 

 Información general sobre los clips de película y los botones

Un clip de película es como una minipelícula de Macromedia Flash MX: tiene su propia línea de tiempo y sus propiedades. Un símbolo de clip de película de la biblioteca puede utilizarse varias veces en un documento de Flash; cada vez que se utiliza un clip se lo denomina instancia del clip de película. Para distinguir una instancia de otra, es necesario asignar un nombre a cada instancia. Las instancias de clip de película pueden anidarse unas dentro de otras para crear una jerarquía.

Cada clip de película tiene una posición en el árbol jerárquico de líneas de tiempo que recibe el nombre de lista de visualización. Las películas que se cargan en Flash Player con la acción loadMovie también tienen líneas de tiempo independientes y una posición en la lista de visualización. Puede utilizar ActionScript para enviar mensajes entre clips de película para que puedan controlarse entre sí. Por ejemplo, una acción en el último fotograma de la línea de tiempo de un clip de película podría indicar a otro clip de película que se reproduzca.

Puede controlar clips de película mediante las acciones y los métodos del objeto MovieClip. Para controlar un clip de película, debe referirse al clip utilizando una ruta de destino, que indica su ubicación exclusiva en la lista de visualización. Puede utilizar los métodos del objeto MovieClip para arrastrar un clip de película, agregar de forma dinámica un clip de película a un documento, convertir un clip de película en una máscara y dibujar líneas y rellenos en el escenario.

Al igual que las instancias de clip de película, cada instancia de botón es un objeto de ActionScript con sus propios métodos y propiedades. Puede asignar un nombre de instancia a un botón y manipularlo con ActionScript. Cada clip de película y botón de un documento de Flash son objetos con propiedades y métodos que se pueden cambiar a través de ActionScript para crear animaciones no lineales complejas e interacciones avanzadas.

 

Líneas de tiempo múltiples

Flash Player tiene un orden de apilamiento con varios niveles. Todas las películas Flash tienen una línea de tiempo principal situada en el nivel 0 en Flash Player. Puede utilizar la acción loadMovie para cargar otras películas Flash (archivos SWF) en Flash Player en distintos niveles. Si carga películas en niveles superiores al nivel 0, las películas se colocarán una encima de otra, como si se tratara de dibujos en papel transparente; cuando no haya contenido en el escenario, podrá ver el contenido de los niveles inferiores a través de éste. Si carga una película en el nivel 0, ésta sustituirá la línea de tiempo principal. Cada película cargada en un nivel de Flash Player tiene su propia línea de tiempo.

Las películas Flash de cualquier nivel pueden tener instancias de clips de película en sus líneas de tiempo. Cada instancia de clip de película también tiene una línea de tiempo y puede contener otros clips de película que también tienen líneas de tiempo. En Flash Player, los niveles y las líneas de tiempo están ordenados jerárquicamente para que pueda organizar y controlar fácilmente los objetos de la película.


 

Jerarquía de niveles y de clips de película de Flash Player


 En Flash, esta jerarquía de niveles y de clips de película recibe el nombre de lista de visualización. Si realiza tareas de edición en Flash, puede ver la lista de visualización en el explorador de películas; al reproducir la película en modo de prueba, en el reproductor autónomo de Flash o un navegador Web, podrá ver la lista de visualización en el depurador.

El explorador de películas muestra la lista de visualización.

Las líneas de tiempo guardan una relación específica entre ellas en función de su ubicación en la lista de visualización. Una línea de tiempo secundaria anidada dentro de otra línea de tiempo se verá afectada por los cambios realizados en la línea de tiempo principal. Por ejemplo, si portland es un elemento secundario de oregon y se cambia la propiedad _xscale de oregon, portland también cambiará de escala.

Las líneas de tiempo también se pueden enviar mensajes entre sí. Por ejemplo, una acción del último fotograma de un clip de película puede indicar a otro clip de película que se reproduzca.

Jerarquía de clips de película

Si coloca una instancia de clip de película en la línea de tiempo de otro clip de película, el clip de película colocado es el secundario y el otro clip de película es el principal. La instancia principal contiene la instancia secundaria. La línea de tiempo raíz de cada nivel es el elemento principal de todos los clips de película de su nivel y, puesto que es la línea de tiempo situada más arriba, no tiene ningún elemento principal.

Las relaciones principal-secundario de los clips de película son jerárquicas. Para entender esta jerarquía, tome como ejemplo la jerarquía de un equipo: la unidad de disco duro tiene un directorio raíz (o carpeta) y subdirectorios. El directorio raíz es análogo a la línea de tiempo principal de una película Flash: es el nivel principal de todo lo demás. Los subdirectorios son análogos a los clips de película.

Puede utilizar la jerarquía de clips de película Flash para organizar los objetos visuales relacionados. Cualquier cambio que realice en un clip de película principal también se llevará a cabo en sus clips secundarios.

Por ejemplo, puede crear una película Flash con un coche que se mueve por el escenario. Utilice un símbolo de clip de película para representar el coche y establecer una interpolación de movimiento para moverlo a través del escenario.


Una interpolación de movimiento mueve el clip de película del coche en la línea de tiempo principal.

Si desea agregar ruedas que giren, cree un clip de película para una rueda del coche y dos instancias de este clip de película, denominadas frontWheel y backWheel. A continuación, coloque las ruedas en la línea de tiempo del clip de película del coche, no en la línea de tiempo principal. Al ser instancias secundarias de car, frontWheel y backWheel se ven afectadas por los cambios realizados en car, lo que significa que se moverán con el coche a medida que éste se interpole a través del escenario.


Las instancias de rueda se colocan en la línea de tiempo del clip de película principal del coche

Para hacer que ambas instancias giren, debe establecer una interpolación de movimiento que gire el símbolo de rueda. Incluso después de haber cambiado frontWheel y backWheel, éstas seguirán viéndose afectadas por la interpolación del clip de película principal, car; las ruedas giran, pero también se mueven con el clip de película principal car por el escenario.


Símbolo de rueda en modo de edición de símbolos

 

Rutas de destino absolutas y relativas

Puede utilizar acciones para enviar mensajes de una línea de tiempo a otra. La línea de tiempo que contiene la acción se denomina línea de tiempo de control y la línea de tiempo que recibe la acción se denomina línea de tiempo de destino. Por ejemplo, puede haber una acción en el último fotograma de una línea de tiempo que indique a otra línea de tiempo que se reproduzca. Para hacer referencia a una línea de tiempo de destino, debe utilizar una ruta de destino que indique la ubicación de un clip de película en la lista de visualización.



Lista de visualización de clips de película en modo de edición


 

La jerarquía de los clips de película de esta lista de visualización es la siguiente:

_level0
            westCoast
                        california
                                     sanfrancisco
                                     bakersfield
                        oregon
                                     portland
                                     ashland
                        washington
                                     olympia
                                     ellensburg
 

Al igual que en un servidor Web, puede hacer referencia a cada línea de tiempo de Flash de dos maneras distintas: con una ruta absoluta o con una ruta relativa. La ruta absoluta de una instancia corresponde siempre a la ruta completa de un nombre de nivel, independientemente de qué línea de tiempo llame a la acción; por ejemplo, la ruta absoluta a la instancia california será _level0.westCoast.california. Una ruta relativa es diferente cuando se llama desde diferentes ubicaciones; por ejemplo, la ruta relativa para california desde sanfrancisco es _parent, pero desde portland, es _parent._parent.california.

 

Una ruta absoluta comienza con el nombre del nivel en el que está cargada la película y continúa a lo largo de la lista de visualización hasta que alcanza la instancia de destino. También puede utilizar el alias _root para hacer referencia a la línea de tiempo situada más arriba del nivel actual. Por ejemplo, una acción del clip de película california que hace referencia al clip de película oregon puede utilizar la ruta absoluta _root.westCoast.oregon.

 

La primera película que se va a abrir en Flash Player se carga en el nivel 0. Debe asignar un número de nivel a cada película que se cargue adicionalmente. Si utiliza una referencia absoluta en ActionScript para hacer referencia a una película cargada, utilice la sintaxis _levelX, siendo X el número de nivel en el que está cargada la película. Por ejemplo, la primera película abierta en Flash Player se llama _level0; una película cargada en el nivel 3 se llama _level3.

En el ejemplo siguiente, se han cargado dos películas en el reproductor: TargetPaths.swf en el nivel 0 e EastCoast.swf en el nivel 5. Los niveles están indicados en el depurador, con el nivel 0 indicado como _root.


 

Para comunicarse entre películas en diferentes niveles, debe utilizar el nombre de nivel en la ruta de destino. Por ejemplo, la instancia portland se referiría a la instancia atlanta como se muestra a continuación:

 

_level5.georgia.atlanta
 

Puede utilizar el alias _root para hacer referencia a la línea de tiempo principal del nivel actual. Para la línea de tiempo principal, el alias _root significa _level0 cuando se selecciona como destino desde un clip que también está en _level0. Para una película cargada en _level5, _root es igual a _level5 cuando se selecciona como destino desde un clip de película que también se encuentra en el nivel 5. Por ejemplo, puesto que southcarolina y florida se han cargado en el mismo nivel, una acción llamada desde la instancia southcarolina podría utilizar la ruta absoluta siguiente para seleccionar la instancia florida como destino:

 

_root.eastCoast.florida

 

Una ruta relativa depende de la relación entre la línea de tiempo de control y la línea de tiempo de destino. Las rutas relativas sólo pueden referirse a destinos que se encuentren dentro de su propio nivel de Flash Player. Por ejemplo, no puede utilizar una ruta relativa en una acción en _level0 que especifica una línea de tiempo en _level5 como destino.

En una ruta relativa, utilice la palabra clave this para hacer referencia a la línea de tiempo actual del nivel activo; utilice el alias _parent para indicar la línea de tiempo principal de la línea de tiempo actual. El alias _parent puede utilizarse repetidamente para subir un nivel en la jerarquía de clips de película dentro del mismo nivel de Flash Player. Por ejemplo, _parent._parent controla un clip de película dos niveles más arriba en la jerarquía. La línea de tiempo situada más arriba en cualquier nivel de Flash Player es la única línea de tiempo que no tiene definido el valor _parent.

En el ejemplo siguiente, cada ciudad (charleston, atlanta y staugustine) es un nivel secundario de una instancia de estado y cada estado (southcarolina, georgia y florida) es un nivel secundario de la instancia eastCoast.


 

Una acción en la línea de tiempo de la instancia charleston podría utilizar la ruta de destino siguiente para seleccionar la instancia southcarolina como destino:

_parent

Para especificar la instancia eastCoast como destino desde una acción en charleston, podría utilizar la ruta relativa siguiente:

_parent._parent

Para especificar la instancia atlanta como destino desde una acción en la línea de tiempo de charleston, podría utilizar la ruta relativa siguiente:

_parent._parent.georgia.atlanta

Las rutas relativas son útiles para volver a utilizar scripts.

 

Por ejemplo, podría adjuntar un script a un clip de película que aumenta el clip de película principal en un 150%, como se muestra a continuación:

 

onClipEvent (load) {
      _parent._xscale = 150;
      _parent._yscale = 150;
}

A continuación, puede volver a utilizar este script adjuntándolo a cualquier instancia de clip de película.

Tanto si utiliza una ruta absoluta como una ruta relativa, puede identificar una variable en una línea de tiempo o una propiedad de un objeto con un punto (.) seguido del nombre de la variable o propiedad. Por ejemplo, la sentencia siguiente establece la variable name de la instancia form en el valor "Gilbert":

 

_root.form.name = "Gilbert";

Utilización de acciones y métodos para controlar clips de película

Puede utilizar las acciones de ActionScript o los métodos del objeto MovieClip para llevar a cabo tareas en clips de película. Algunos métodos de MovieClip realizan las mismas tareas que las acciones que tienen el mismo nombre; otros métodos del objeto MovieClip, tales como hitTest y swapDepths, no tienen acciones correspondientes.

Cuando una acción y un método ofrecen comportamientos similares, puede controlar los clips de película con cualquiera de ellos. La elección depende de lo que prefiera y de lo familiarizado que esté con la creación de scripts en ActionScript. Independientemente de que se utilice una acción o un método, la línea de tiempo de destino deberá estar cargada en Flash Player cuando se llame a la acción o al método.

Las acciones siguientes seleccionan clips de película como destino: loadMovie, unloadMovie, loadVariables, setProperty, startDrag, duplicateMovieClip y removeMovieClip. Para utilizar estas acciones, debe introducir una ruta de destino en el parámetro de destino de la acción para indicar el destino de la acción.

Los siguientes métodos de MovieClip pueden controlar clips de película o niveles cargados y no tienen acciones equivalentes: attachMovie, createEmptyMovieClip, createTextField, getBounds, getBytesLoaded, getBytesTotal, getDepth, globalToLocal, localToGlobal, hitTest, setMask y swapDepths.

Para utilizar un método, debe invocarlo indicando la ruta de destino del nombre de instancia seguida de un punto y, después, el nombre del método y los parámetros, como en las sentencias siguientes:

myMovieClip.play();
parentClip.childClip.gotoAndPlay(3);
 

En la primera sentencia, el método play mueve la cabeza lectora de la instancia myMovieClip. En la segunda sentencia, el método gotoAndPlay envía la cabeza lectora de childClip (que es secundaria de la instancia parentClip) al fotograma 3 y continúa moviendo la cabeza lectora.

Las acciones que controlan una línea de tiempo tienen un parámetro de destino que permite especificar la ruta de destino a la instancia que desea controlar. Por ejemplo, en el script siguiente la acción startDrag selecciona como destino a la instancia customCursor y hace que se pueda arrastrar:

 

on(press){
      startDrag("customCursor");
}
 

En el ejemplo siguiente se ilustra la diferencia entre utilizar un método y utilizar una acción. Ambas sentencias duplican la instancia myMovieClip, asignan el nombre newClip al nuevo clip y lo colocan a una profundidad de 5.

 

myMovieClip.duplicateMovieClip("newClip", 5);
duplicateMovieClip("myMovieClip", "newClip", 5);
 

Llamada a varios métodos en un solo clip de película

Puede utilizar la acción with para referirse a un clip de película como destino una vez y después ejecutar una serie de métodos en ese clip. La acción with funciona en todos los objetos de ActionScript (por ejemplo, Array, Color y Sound), no solamente en clips de película.

La acción with toma un objeto como parámetro. El objeto que especifique se agregará al final de la ruta de destino actual. Todas las acciones anidadas dentro de una acción with se llevan a cabo dentro de la nueva ruta de destino, o ámbito. Por ejemplo, en el siguiente script, a la acción with se le pasa el objeto donut.hole para cambiar las propiedades de hole:

with (donut.hole){
      _alpha = 20;
      _xscale = 150;
      _yscale = 150;
}

Es como si las sentencias dentro de la acción with se llamaran desde la línea de tiempo de la instancia hole. El código anterior equivale al siguiente:

donut.hole._alpha = 20;
donut.hole._xscale = 150;
donut.hole._yscale = 150;
 

El código anterior también equivale al siguiente:

with (donut){
      hole._alpha = 20;
      hole._xscale = 150;
      hole._yscale = 150;
}

 

Carga y descarga de películas adicionales

Para reproducir películas adicionales sin cerrar Flash Player, o pasar de una película a otra sin cargar otra página HTML, puede utilizar la acción o el método loadMovie. Puede utilizar loadMovie para enviar variables a un script CGI que genera un archivo SWF como resultado del CGI. Cuando carga una película, puede especificar un nivel o un clip de película de destino en el que se cargará la película. Si carga una película en un destino, la película cargada heredará las propiedades del clip de película de destino. Una vez que se ha cargado la película, puede cambiar dichas propiedades.

La acción y el método unloadMovie eliminan una película cargada previamente con loadMovie. La descarga de películas de modo explícito con unloadMovie asegura una transición gradual entre las películas y puede reducir la memoria requerida por Flash Player.

Utilice la acción loadMovie para realizar cualquiera de las acciones siguientes:

Reproducir una secuencia de anuncios publicitarios en forma de archivos SWF colocando una acción LoadMovie al final de cada archivo SWF para cargar la película siguiente.

Desarrollar una interfaz de bifurcación que permita al usuario elegir entre distintos archivos SWF.

Crear una interfaz de navegación con controles de navegación en el nivel 0 que carguen otros niveles. Cargar niveles produce transiciones más suaves que cargar nuevas páginas HTML en un navegador.

 

Carga de imágenes y sonidos de forma dinámica

Puede utilizar la acción o el método loadMovie para cargar archivos de imagen JPEG en una película Flash mientras ésta se reproduce. Puede utilizar el método loadSound del objeto Sound para cargar archivos de sonido MP3 en una película Flash mientras ésta se reproduce.

Al cargar una imagen, la esquina superior izquierda de la imagen se sitúa en el punto de registro del clip de película. Dado que este punto suele ser el centro del clip de película, la imagen cargada no aparecerá en el centro. Además, cuando se carga una imagen en una línea de tiempo raíz, la esquina superior izquierda de la imagen se sitúa en la esquina superior izquierda del escenario. La imagen cargada hereda la rotación y la escala del clip de película, pero el contenido original del clip de película se elimina.

 

Modificación de la posición y el aspecto de clips de película

Para cambiar las propiedades de un clip de película a medida que se reproduce, escriba una sentencia que asigne un valor a una propiedad o utilice la acción setProperty. Por ejemplo, en el código siguiente se establece la rotación de la instancia mc en 45:

mc._rotation = 45;
 

Esto es equivalente al código siguiente, en el que se utiliza la acción setProperty:

 

setProperty("mc", _rotation, 45);
 

Algunas propiedades, llamadas propiedades de sólo lectura, tienen valores que se pueden leer pero no establecer (estas propiedades están especificadas como propiedades de sólo lectura en las entradas correspondientes del diccionario de ActionScript). Las propiedades siguientes son de sólo lectura: _currentframe, _droptarget, _framesloaded, _parent, _target, _totalframes, _url, _xmouse e _ymouse.

 

Puede escribir sentencias para establecer cualquier propiedad que no sea de sólo lectura. La sentencia siguiente establece la propiedad _alpha de la instancia de clip de película wheel, que es secundaria de la instancia car:

 

car.wheel._alpha = 50;
 

Además, puede escribir sentencias que obtienen el valor de una propiedad de clip de película. Por ejemplo, la sentencia siguiente obtiene el valor de la propiedad _xmouse de la línea de tiempo del nivel actual y establece la propiedad _x de la instancia customCursor en ese valor:

 

onClipEvent(enterFrame){
      customCursor._x = _root._xmouse;
}

Esto es

equivalente al código siguiente, en el que se utiliza la función getProperty:

 

onClipEvent(enterFrame){
      customCursor._x = getProperty(_root, _xmouse);
}

Las propiedades _x, _y, _rotation, _xscale, _yscale, _height, _width, _alpha y _visible se ven afectadas por las transformaciones del elemento principal del clip de película y modifican el clip de película y cualquiera de los elementos secundarios del clip. Las propiedades _focusrect, _highquality, _quality y _soundbuftime son globales, solamente pertenecen al nivel 0 de la línea de tiempo principal. Todas las demás propiedades pertenecen a cada clip de película o nivel cargado.

 

Clips de película que se pueden arrastrar

Puede utilizar la acción o el método startDrag para hacer que se pueda arrastrar un clip de película mientras se reproduce una película. Por ejemplo, puede crear un clip de película que se pueda arrastrar para juegos, funciones de arrastrar y soltar, interfaces personalizables, barras de desplazamiento y controles deslizantes.

Un clip de película se puede arrastrar hasta que esta acción se detenga explícitamente con stopDrag, o hasta que se seleccione otro clip de película como destino de startDrag. Sólo un clip de película puede arrastrarse al mismo tiempo.

Para crear comportamientos de arrastrar y soltar más complejos, puede probar la propiedad _droptarget del clip de película que se está arrastrando. Por ejemplo, puede examinar la propiedad _droptarget para ver si la película se arrastró a un clip de película específico (como un clip de película de tipo "papelera") y, a continuación, desencadenar otra acción.

Duplicación y eliminación de clips de película

Para duplicar o eliminar instancias de clip de película mientras se reproduce una película, utilice duplicateMovieClip o removeMovieClip, respectivamente. La acción y el método duplicateMovieClip crean en forma dinámica una nueva instancia del clip de película, le asignan un nuevo nombre de instancia y le proporcionan una profundidad. Un clip de película duplicado siempre comienza en el fotograma 1, aunque el clip de película original se encontrase en otro fotograma cuando se duplicó, y siempre se encuentra encima de todos los clips de película definidos anteriormente situados en la línea de tiempo.

Para borrar un clip de película creado con duplicateMovieClip, utilice removeMovieClip. Los clips de película duplicados se eliminan si el clip de película principal se borra.

Adición dinámica de un clip de película o un sonido al escenario

Para recuperar una copia de un clip de película o de un sonido de la biblioteca y reproducirla como parte de su película, puede utilizar el método attachMovie del objeto MovieClip o el método attachSound del objeto Sound. El método attachMovie carga un clip de película como elemento secundario del clip que lo carga y lo reproduce mientras se ejecuta la película. El método attachSound adjunta un sonido a una instancia del objeto Sound.

Si desea utilizar ActionScript para adjuntar un clip de película o un sonido desde la biblioteca, debe asignar un identificador exclusivo de vínculo al clip de película o sonido. Puede asignar este nombre en el cuadro de diálogo Propiedades de vinculación.

Al reproducirse una película, Flash carga todos los clips de película y sonidos agregados con attachMovie o attachSound antes del primer fotograma de la película. Esto puede producir cierta demora en la reproducción del primer fotograma. Cuando asigne un identificador de vínculo a un elemento, también puede especificar si este contenido debe agregarse antes del primer fotograma. Si no se agrega en el primer fotograma, debe incluir una instancia de éste en algún otro fotograma de la película; de lo contrario, el elemento no se exportará al archivo SWF.

 
Para asignar un nombre a un clip de película:

1

Elija Ventana > Biblioteca para abrir el panel Biblioteca.

2

Seleccione un clip de película del panel Biblioteca.

3

En el panel Biblioteca, elija Vinculación en el menú de opciones.

 

Aparecerá el cuadro de diálogo Propiedades de vinculación.

4

En Vinculación, seleccione Exportar para ActionScript.

5

En Identificador, introduzca un ID para el clip de película.

6

Si no desea que el clip de película o sonido se cargue antes del primer fotograma, anule la selección de la opción Exportar en primer fotograma.

7

Haga clic en Aceptar.

 
Para adjuntar un clip de película a otro clip de película:

1

Con el panel Acciones abierto, seleccione un fotograma de la línea de tiempo.

2

En la caja de herramientas Acciones (en la parte izquierda del panel Acciones), haga clic en la categoría Objetos, la categoría Película y la categoría Clip de película, y haga doble clic en el método attachMovie.

3

En el parámetro para el objeto, introduzca el nombre de instancia de un clip de película del escenario.

4

Introduzca valores para los parámetros siguientes:

En idName, especifique el identificador introducido en el cuadro de diálogo Propiedades de vinculación.

En newName, introduzca un nombre de instancia para el clip adjuntado para poder asignarle un destino.

En depth, introduzca el nivel en el que se adjuntará la película duplicada al clip de película. Cada película adjuntada tiene su propio orden de apilamiento, siendo el nivel 0 el nivel de la película que lo originó. Los clips de película adjuntados siempre están encima del clip de película original. A continuación, se muestra un ejemplo:

 

myMovieClip.attachMovie("calif", "california", 10);

 

Creación dinámica de un clip de película vacío

Para crear un clip de película vacío en el escenario mientras se reproduce la película, utilice el método createEmptyMovieClip del objeto MovieClip. Este método crea un clip de película como elemento secundario del clip que llama al método. El punto de registro de un clip de película vacío recién creado se encuentra en la esquina superior izquierda. Aunque el método createEmptyMovieClip se comporta de forma parecida al método attachMovie, no es necesario proporcionar un identificador de vínculo, ya que no se está agregando un símbolo de la biblioteca.

 
Para crear un clip de película vacío:

1

Seleccione un fotograma, un botón o un clip de película al que desee asignar la acción.

2

Elija Ventana > Acciones para abrir el panel Acciones si aún no está abierto.

3

En la caja de herramientas Acciones (en la parte izquierda del panel Acciones), haga clic en la categoría Objetos, la categoría Película, la categoría Clip de película y la categoría Métodos, y haga doble clic en el método createEmptyMovieClip.

4

En el parámetro para el objeto, introduzca el nombre de instancia de un clip de película del escenario o haga clic en el botón Insertar ruta de destino para navegar hasta una instancia.

5

Introduzca valores para los parámetros siguientes:

En instanceName, especifique un identificador.

En depth, introduzca el nivel en el que se adjuntará la película duplicada al clip de película. Cada película creada tiene su propio orden de apilamiento, siendo el nivel 0 el nivel de la película que lo originó. Los clips de película recién creados siempre están encima del clip de película original. A continuación, se muestra un ejemplo:

 

myMovieClip.createEmptyMovieClip("newMC", 10);

 

Dibujo de formas con ActionScript

Puede utilizar los métodos del objeto MovieClip para dibujar líneas y rellenos en el escenario mientras se reproduce la película. Esto permite crear herramientas de dibujo para los usuarios y dibujar formas en la película como respuesta a los eventos. Los métodos de dibujo son los siguientes: beginFill, beginGradientFill, clear, curveTo, endFill, lineTo, lineStyle y moveTo.

Puede utilizar estos métodos de dibujo con cualquier clip de película. Sin embargo, si utiliza los métodos de dibujo con un clip de película que se ha creado en modo de edición, los métodos se ejecutarán antes de dibujar el clip. Es decir, el contenido creado en modo de edición se dibuja encima del contenido dibujado con los métodos de dibujo.

Puede utilizar clips de película con métodos de dibujo como máscaras; sin embargo, al igual que en todas las máscaras de clip de película, los trazos se pasan por alto.

 
Para dibujar una forma:

1

Utilice el método createEmptyMovieClip para crear un clip de película vacío en el escenario.

 

El nuevo clip de película es un elemento secundario de un clip de película existente o de la línea de tiempo principal, tal como se muestra a continuación:

 

_root.createEmptyMovieClip ("triangle", 1);

2

Utilice el clip de película vacío para llamar a los métodos de dibujo.

 

En el ejemplo siguiente se dibuja un triángulo con líneas de color magenta de 5 puntos y sin relleno:

 

with (_root.triangle) {
            lineStyle (5, 0xff00ff, 100);
            moveTo (200, 200);
            lineTo (300, 300);
            lineTo (100, 300);
            lineTo (200, 200);
}