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:
-
package com.zguillez.utils
-
{
-
import flash.display.DisplayObject;
-
public class Tools
-
{
-
public static function duplicateMovieClip(target
isplayObject)
isplayObject -
{
-
var targetClass:Class;
-
targetClass = Object(target).constructor;
-
var duplicado:DisplayObject = new targetClass();
-
-
duplicado.transform = target.transform;
-
duplicado.filters = target.filters;
-
duplicado.cacheAsBitmap = target.cacheAsBitmap;
-
duplicado.opaqueBackground = target.opaqueBackground;
-
-
target.parent.addChild(duplicado);
-
return duplicado;
-
}
-
}
-
}
Su uso serÃa este:
-
import com.zguillez.utils;
-
var clip2:DisplayObject = Tools.duplicateMovieClip(clip);
-
clip2.x = 200;
-
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:
-
package com.zguillez.display
-
{
-
import flash.display.DisplayObject;
-
import flash.display.MovieClip;
-
//-----------------------------
-
public class Duplicado extends MovieClip
-
{
-
private var _duplicado:DisplayObject;
-
//-----------------------------
-
public function Duplicado(target
isplayObject) -
{
-
var targetClass:Class;
-
targetClass = Object(target).constructor;
-
var _duplicado:DisplayObject = new targetClass;
-
-
_duplicado.transform = target.transform;
-
_duplicado.filters = target.filters;
-
_duplicado.cacheAsBitmap = target.cacheAsBitmap;
-
_duplicado.opaqueBackground = target.opaqueBackground;
-
-
addChild(_duplicado);
-
}
-
//-----------------------------
-
}
-
}
Post relacinonados:
3 Comments »
RSS feed for comments on this post. TrackBack URI










[...] 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. [...]
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);
@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";