HTMLpointHTMLpoint HTMLpoint.com


 Duplicado de movieclip



A menudo puede ocurrir que se crean efectos dinámicos que necesitan la inclusión de más instancias de una clip; esto haría que la película fuese demasiado complicada de gestionar. Para evitarlo, se ha introducido en Flash la action Duplicad Movieclip que, cada vez que se utiliza, crea un duplicado (una instancia) de la clip especificada como target. He aquí un ejemplo muy simple:

Cuando se pulsa la tecla DUPLICA se ejecuta la action Duplicad Movieclip además de la formulación de otros parámetros que permiten desplazar la nueva clip duplicada más a la derecha respecto a la original:

On (Release)
  Set Variable: "x" = x+1
  Duplicad Movie Clip ("/logo", "logo" & x, x)
  Set Property ("/logo" & x, X Position) = (GetProperty ( "/logo", _x ) * x)
End On

Como se ve por la imagen, es fácil entender la sintaxis de laaction.
En el parámetro target incluid el nombre de la clip original que se tiene que duplicar; en New Name dad el nuevo nombre que debe tener el duplicado y, para terminar, en Depth asignad un valor numérico de superposición respecto a la clip original (qué clip tiene que superponerse a otra).

Seguro que se habrá notado que en los parámetros New Name y Depth no hay valores numéricos, sino valores expression. El motivo hay que buscarlo en el hecho de que la action carece de valores de este tipo ("dinámicos"), Duplicad Movleclip sólo tendría efecto una vez. En efecto, si hubiesemos incluido valores fijos logo1 y 1 respectivamente para New Name y Depth, cada vez que se eligiese el botón el nuevo duplicado sustituiría al viejo sin crear uno nuevo. Por esta razon, es necesario incluir valores dinámicos. En efecto, cada vez que se libera el botón, se genera una clip con nombre "logo" & x; después logo1 la primera vez; logo2 la segunda; logo3, la tercera, etc. (¿recordáis el uso del operador & para concatenar más cadenas?) También Depth asume un valor dinámico que cada vez se va incrementando de unidad en unidad.

La variable x tiene que asumir un nuevo valor (incrementado de 1) todas las veces que se libere el botón, por eso antes de ejecutar la action Duplicad Movieclip incluimos:

Set Variable: "x" = x+1

Después, para darle la nueva posición a la clip que se acabe de duplicar, será necesario utilizar la action Set Property que asigna un valor a la propiedad X Position (posición horizontal) de la clip "/logo" & x:

Set Property ("/logo" & x, X Position)

Dado que la posición de la nueva clip varía dinámicamente con el número liberaciones del bottone, es necesario crear una expresión que permita desplazar de tot pixel el nuevo duplicado que se haya generado:

GetProperty ( "/logo", _x ) * x

El valor de la posición horizontal de la clip logo original hay que multiplicarlo por el valor de la variable x.
Para evitar que la primera clip duplicada se superponga a la original (x tendría valor 0), incluimos

Set Variable: "x" = "1"

en el primer keyframe del movie Flash.

Step by step
Para entender mejor estas instrucciones, hagamos un test "step by step"...
Entonces, se ejecuta la animacion y la variable x adquiere valor 1 (para la action incluida en el primer keyframe).
Cuando el usuario clica en el botón y lo suelta, veamos qué sucede (suponiendo que la clip logo se haya colocado en posición horizontal igual a 30):

ACTION RESULTADO
Set Variable: "x" = x+1

2
(da 1+1)

Duplicate Movie Clip ("/logo", "logo" & x, x)

Name: logo2
Depth: 2

Set Property ("/logo" & x, X Position) = (GetProperty ( "/logo", _x )*x)

60
(da 30*2)

Por lo tanto, se genera una nueva clip logo2 con valores "duplicados" del orioginal (posición, nombre y depth).

La segunda vez que se suelta, esto es lo que pasa:

ACTION RISULTATO
Set Variable: "x" = x+1

3
(da 2+1)

Duplicate Movie Clip ("/logo", "logo" & x, x) Name: logo3
Depth: 3
Set Property ("/logo" & x, X Position) = (GetProperty ( "/logo", _x ) * x)

90
(da 30*3)

y así para cada vez que se suelta el botón.

Remove Movieclip

Con este parámetro, se elimina la clip especificada como target.
Si las clip se han creado dinámicamente, es necesario especificar también este valor dinámicamente.


  Torna a inizio pagina