Home » AS3 »Básico »Flash »Tutoriales » Currently Reading:

Manejo de MovieClips con ActionScript 3

mayo 25, 2007 AS3, Básico, Flash, Tutoriales 16 Comments
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.

img

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

img

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.

img

Ahora para añadir este MovieClip a nuestra película hemos de crear una instancia de esa clase

  1. var clip1:clipA = new clipA();

Y la situaremos en el stage con addChild

  1. var clip1:clipA = new clipA();
  2. clip1.x = 100;
  3. clip1.y = 100;
  4. addChild(clip1);

Y listo!

img

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.

  1. package
  2. {
  3.    import flash.display.MovieClip;
  4.    import flash.events.MouseEvent;
  5.    //
  6.    public class clipA extends MovieClip
  7.    {
  8.       public function clipA()
  9.       {
  10.          addEventListener(MouseEvent.MOUSE_DOWN, mouse_down);
  11.       }
  12.       private function mouse_down(event:MouseEvent):void
  13.       {
  14.          trace("CLICK!");
  15.       }
  16.    }
  17. }

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

  1. package
  2. {
  3.    import flash.display.MovieClip;
  4.    //
  5.    public class Main extends MovieClip
  6.    {
  7.       private var _root:MovieClip;
  8.       private var clip1:clipA = new clipA();
  9.       //
  10.       public function Main(ruta:MovieClip)
  11.       {
  12.          _root = ruta;
  13.          //
  14.          clip1.x = 100;
  15.          clip1.y = 100;
  16.          _root.addChild(clip1);
  17.       }
  18.    }
  19. }

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

  1. var _root:Main = new Main(this);

Esta clase Main también la podíamos haber instanciado desde el panel de propiedades de la película

img

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í:

  1. package
  2. {
  3.    import flash.display.MovieClip;
  4.    //
  5.    public class Main extends MovieClip
  6.    {
  7.       private var _root:MovieClip;
  8.       private var clip1:clipA = new clipA();
  9.       //
  10.       public function Main()
  11.       {
  12.          _root = this;
  13.          //
  14.          clip1.x = 100;
  15.          clip1.y = 100;
  16.          _root.addChild(clip1);
  17.       }
  18.    }
  19. }

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 😉

Compártelo:

Manejo de MovieClips con ActionScript 3
Visto 48.179 veces

Currently there are "16 comments" on this Article:

  1. Rafeo dice:

    Ã’rale sencillo y muy bueno, gracias Zguillez !

  2. Serrrrr dice:

    Disculpa, para hacer mis propias clases se declaran de la misma forma?

  3. admin dice:

    @Serrrr: Si claro, puedes declarar cualquier clase de esta forma. Siempre que quieras asignar una clase a un MovieClip de la librería.

  4. alexis dice:

    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

  5. rebef dice:

    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!

  6. grimihan dice:

    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!

  7. grimihan dice:

    ya estáaaaaaaaa muchísimas gracias tio!!!!! no te imaginas como te agradezco este post!!!!! Saludos 😉

  8. ikaro dice:

    Buena guía, sólo te comento que no se están mostrando las imagenes, saludos

  9. cesar dice:

    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

  10. pshycodelic dice:

    Creo ke te falto el argumente para el metodo Main “public function Main(_root)” en el ultimo ejemplo de codigo

  11. silvia dice:

    hola buenos dias, la verdad es que me estoy volviendo loca, porque no tengo mucha idea y he empezado un trabajo con as3 y ahora estoy atascada.
    mi duda es la siguiente, ya no hay que poner en el nombre de instancia de un boton el “_btn”?? poruqe me da error en el codigo constantemente y ahora no se que hacer poruqe me sale este mensaje constantemente:
    Advertencia: Esta película utiliza funciones no admitidas en el Flash Player 5
    Símbolo=mapas, layer=botones_mapa, frame=1:Nombre de instancia de botón de Flash MX
    Símbolo=mapas, layer=boton_volver_mapas, frame=1:Nombre de instancia de botón de Flash MX

    espero que me puedas ayudar si no te importa,
    muchisimas gracias

  12. davinchi dice:

    Hola, quería saber en qué lugar creas la clase clipA para después poder instanciarlo en “private var clip1:clipA = new clipA();” He ejecutado los dos últimos ejemplos y da un error: “1046: No se encontró el tipo o no es una constante en tiempo de compilación: clipA.”
    Gracias

  13. davinchi dice:

    Perdón. Había leido mal. El ejemplo está perfecto.
    Muchas gracias.

  14. EricR dice:

    Hola. Una pregunta:
    Que tal si clipA tuviera 2 animaciones dentro identificadas con markers. Como puedo hacer que si doy click al movie clip se muestre la animación 1 y cuando lo suelte se muestre la animación 2? ojo son animaciones no son estáticas. Es que estoy que intento y solo se muestra el primer fotograma de las animaciones.

    Gracias

  15. Fil dice:

    Clarisimo

Comment on this Article:








Twitter: zguillez

AdvertisementAdvertisementAdvertisementAdvertisement

Recibe las novedades por email



Map

Ranking

Codigoactionscript.org: 4.65 sobre 5 (106 valoraciones)

twitter-widget.com