Manejo de MovieClips con ActionScript 3
Este es un Tip muy sencillo pero que trae de cabeza a la gente que empieza con ActionScript 3, asà que lo escribo para intentar aclarar un poco cuál es el sistema de añadir a nuestra pelÃcula MovieClips que estén situados dentro de nuestra biblioteca y empezar a montar nuestra pelÃcula.
Como ya se dijo en otro tip, el sistema de añadir elementos de la biblioteca a cambiado en AS3. Ahora attachMovie no funciona, añadimos los clips con addChild y para realizar este proceso hemos de crear una clase para cada clip que queramos añadir.
Este es el proceso a seguir:
Primero crearemos el MovieClip y lo tendremos en la biblioteca.

Abriremos las propiedades del MovieClip y en las opciones de linkage seleccionaremos "exportar para actionscrip" y le daremos un nombre para la clase.

Como podemos ver, ahora en AS3 hemos de vincular el MovieClip a una clase, NO darle un nombre de identificador como hacÃamos en AS2.
NOTA: Si intentásemos añadir un nombre de identificador al MovieClip no aparecerÃa una advertencia indicándonos que ese proceso solo es para AS2 y nos preguntara si queremos cambiar las opciones de publicación.

Ahora para añadir este MovieClip a nuestra pelÃcula hemos de crear una instancia de esa clase
Y la situaremos en el stage con addChild
clip1.x = 100;
clip1.y = 100;
addChild(clip1);
Y listo!

Ahora si quisiésemos añadirle algún tipo de interactividad a este MovieClip, como por ejemplo añadirle un evento de click, no colocarÃamos el código en el .fla cómo harÃamos en AS1 o AS2 sino que crearemos un archivo .as con el nombre de la clase que le indicamos al MovieClip y ahà escribiremos todo el código necesario para manejar este MovieClip.
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
//
public class clipA extends MovieClip
{
public function clipA()
{
addEventListener(MouseEvent.MOUSE_DOWN, mouse_down);
}
private function mouse_down(event:MouseEvent):void
{
trace("CLICK!");
}
}
}
En AS3 es recomendable trabajar con clases y colocar el menos código posible sobre la lÃnea de tiempo con lo que este código lo podÃamos meter dentro de una clase Main.as
{
import flash.display.MovieClip;
//
public class Main extends MovieClip
{
private var _root:MovieClip;
private var clip1:clipA = new clipA();
//
public function Main(ruta:MovieClip)
{
_root = ruta;
//
clip1.x = 100;
clip1.y = 100;
_root.addChild(clip1);
}
}
}
Al constructor de la clase le pasaremos como parámetro la ruta de la lÃnea de tiempo principal (el _root).
Este serÃa el único código de nuestro .fla
Esta clase Main también la podÃamos haber instanciado desde el panel de propiedades de la pelÃcula

De esta manera no es necesario introducir ningún código dentro de nuestro .fla, y tampoco es necesario pararle ningún parámetro ya que en este caso el this ya hace referencia a la lÃnea de tiempo principal, por lo que la clase Main quedarÃa asÃ:
{
import flash.display.MovieClip;
//
public class Main extends MovieClip
{
private var _root:MovieClip;
private var clip1:clipA = new clipA();
//
public function Main()
{
_root = this;
//
clip1.x = 100;
clip1.y = 100;
_root.addChild(clip1);
}
}
}
A partir de aquà iremos ampliando la clase Main y iremos añadiendo más clases y subclases para construir nuestra pelÃcula.
Espero haber aclarado alguna duda
Post relacinonados:
11 Comments »
RSS feed for comments on this post. TrackBack URI









Ã’rale sencillo y muy bueno, gracias Zguillez !
Disculpa, para hacer mis propias clases se declaran de la misma forma?
@Serrrr: Si claro, puedes declarar cualquier clase de esta forma. Siempre que quieras asignar una clase a un MovieClip de la librerÃÂa.
dentro de mi movieclip hay otro que es un circulo que tiene nombre de instancia cÃÂrculo... ¿por qué no puedo referenciar a ese objeto en el constructor de mi clase?
quiero que ese circulo tenga alpha 60
gracias
que script se le agrega para un boton dentro de un moviclip? para que este haga la accion de regresar a una de los labels la linea de tiempo principal??
les agradeceria mucho su ayuda!
muchas gracias por este tutorial, es muy interesante y útil, pero por favor, podrÃÂan tener la bondad de poner las imágenes, que no se ven y no me queda claro lo que tengo que poner en las opciones de linkage?
MuchÃÂsimas gracias!
ya estáaaaaaaaa muchÃÂsimas gracias tio!!!!! no te imaginas como te agradezco este post!!!!! Saludos
[...] No hay mas attachMovie: http://www.codigo.as/blog/?p=76 [...]
Buena guÃa, sólo te comento que no se están mostrando las imagenes, saludos
Hi I dont understand the example, how I can call the as files from flash, Im new in flash so if you had a complete example (the image doesnt appear). Thanks a lot for the collaboration
see you
Creo ke te falto el argumente para el metodo Main "public function Main(_root)" en el ultimo ejemplo de codigo