Manejo de MovieClips con ActionScript 3

May 25th, 2007 Posted in AS3, Básico, Flash, Tutoriales

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

var clip1:clipA = new clipA();

Y la situaremos en el stage con addChild

var clip1:clipA = new clipA();
clip1.x = 100;
clip1.y = 100;
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.

package
{
   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

package
{
   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

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

package
{
   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 ;)

Comparte:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • del.icio.us
  • Technorati
  • email
  • Print

Post relacinonados:

  1. Acceder a funciones en MovieClips de películas .swf externas
  2. Cómo duplicar MovieClips con gráficos en ActionScript 3
  3. Clase de ActionScript 3 para añadir sombras a MovieClips
  4. Asignar código actionscript en clases a fotogramas concretos
  5. La clase Timer

11 Responses to “Manejo de MovieClips con ActionScript 3”

  1. Rafeo Says:

    Ã’rale sencillo y muy bueno, gracias Zguillez !


  2. Serrrrr Says:

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


  3. admin Says:

    @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 Says:

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

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

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

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


  8. ikaro Says:

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


  9. cesar Says:

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

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


Leave a Reply