Home » AS3 »Class »Flash » Currently Reading:

Cómo duplicar un MovieClip en ActionScript 3

enero 3, 2008 AS3, Class, Flash 3 Comments
Cómo duplicar un MovieClip en ActionScript 3

En ActionScript 3 ya no existe el método duplicateMovieClip, pero eso no quiere decir que no podamos duplicar un MovieClip situado en nuestra película.

Con esta pequeña clase podemos conseguir ese duplicado:

  1. package com.zguillez.utils
  2. {
  3.    import flash.display.DisplayObject;
  4.    public class Tools
  5.    {
  6.       public static function duplicateMovieClip(target:DisplayObject):DisplayObject
  7.       {
  8.          var targetClass:Class;
  9.          targetClass = Object(target).constructor;
  10.          var duplicado:DisplayObject = new targetClass();
  11.  
  12.          duplicado.transform = target.transform;
  13.          duplicado.filters = target.filters;
  14.          duplicado.cacheAsBitmap = target.cacheAsBitmap;
  15.          duplicado.opaqueBackground = target.opaqueBackground;
  16.  
  17.          target.parent.addChild(duplicado);
  18.          return duplicado;
  19.       }
  20.    }
  21. }

Su uso sería este:

  1. import com.zguillez.utils;
  2. var clip2:DisplayObject = Tools.duplicateMovieClip(clip);
  3. clip2.x = 200;
  4. clip2.y = 100;

Lo que estamos haciendo es hacer una copia de la clase pasada como parámetro (targetClass) en duplicado:DisplayObject, y a esa nueva clase le añadimos los mismo filtros y transformaciones que la clase original.

Nota: Para poder crear el duplicado de un MovieClip situado en la librería es necesario que el MovieClip tenga la opción “Exportar para ActionScript” activada y con un nombre de clase.

Tambien podríamos haver escrio esta clase de una forma no estática:

  1. package com.zguillez.display
  2. {
  3.     import flash.display.DisplayObject;
  4.     import flash.display.MovieClip;
  5.     //-----------------------------
  6.     public class Duplicado extends MovieClip
  7.     {
  8.         private var _duplicado:DisplayObject;
  9.         //-----------------------------
  10.         public function Duplicado(target:DisplayObject)
  11.         {
  12.             var targetClass:Class;
  13.             targetClass = Object(target).constructor;
  14.             var _duplicado:DisplayObject = new targetClass;
  15.  
  16.             _duplicado.transform = target.transform;
  17.             _duplicado.filters = target.filters;
  18.             _duplicado.cacheAsBitmap = target.cacheAsBitmap;
  19.             _duplicado.opaqueBackground = target.opaqueBackground;
  20.  
  21.             addChild(_duplicado);
  22.         }
  23.         //-----------------------------
  24.     }
  25. }

Compártelo:

Cómo duplicar un MovieClip en ActionScript 3
Visto 13.660 veces

Currently there are "3 comments" on this Article:

  1. […] En el post anterior escribí otra clase para duplicar un MovieClip, en el que se veía que había que para duplicar el clip lo que hay que hacer es crear otra instancia de la misma clase y aplicarle todas las propiedades del clip original al clip duplicado. […]

  2. cavs dice:

    Sr Zguillez, tengo un problema con el codigo, creo que hice bien las cosas y me manda un error que dice 1067: Conversión implícita de un valor de tipo Class a un tipo flash.display:DisplayObject no relacionado. Este error me aparece en esta linea var clip2:DisplayObject = Tools.duplicateMovieClip(clip);

  3. admin dice:

    @Cavs: y “clip” es un objeto de clase que extiende de MovieClip o de Sprite? el error te dice que estas intentando convertir Class a un DisplayObject…
    Si “clip” es un objeto de la libreria asegurate de que le diste un nombre de clase en “Linkage” y que la Base class es “flash.display.MovieClip”;

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