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:
Código :
package com.zguillez.as3
{
import flash.display.DisplayObject;
public class Tools
{
public static function duplicateMovieClip(target:DisplayObject):DisplayObject
{
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:
Código :
import com.zguillez.as3.Tools; 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.

Por glsmaster el 26 de Octubre de 2007
Y pues para adelante... hay más control que en AS 2.0.
Carloz.Yanez :
Este tip es para gente que busque esa función en concreto, y que dificilmente la encontraran siendo parte de otros tip que tienen otras finalidades... De hecho lo escribí por que me han preguntado varias veces y varias personas diferentes por este tema (y todas posteriores a la publicación de tus tips...)
Por hellrider el 30 de Octubre de 2007
hellrider_blog :
Así habla un desarrollador consumado ¿Cuándo sea grande puedo ser como tú?
Por Diegoazul el 30 de Octubre de 2007
yo tampoco se como diseñadores graficos o fanaticos se creen programadores...
Por eguy el 30 de Octubre de 2007
Código :
package com.zguillez.as3 { import flash.display.DisplayObject; public class MovieClipTools { public static function duplicateMovieClip( target:DisplayObject, newName:String = "", depth:int = -1 ):DisplayObject { var targetClass:Class = Object( target ).constructor; var duplicado:DisplayObject = new targetClass(); //asiganomos el nuevo nombre si fue pasado por parametro if(Boolean(newName)) { duplicado.name = newName; } //copiamos todas las propiedades y filtros del original duplicado.transform = target.transform; duplicado.filters = target.filters; duplicado.cacheAsBitmap = target.cacheAsBitmap; duplicado.opaqueBackground = target.opaqueBackground; // agregamos a la lista de objetos en visualización target.parent.addChild( duplicado ); //asignamos el nuevo depth si es que esta dentro del rango válido if( (depth < target.parent.numChildren)Por Señor Oz el 01 de Noviembre de 2007
Por Carlos el 11 de Enero de 2008
Por Libertad el 04 de Junio de 2008
Por puuuuuuuuuufff el 06 de Noviembre de 2008
Por arggg el 06 de Noviembre de 2008
Por daniel el 14 de Noviembre de 2008
1046: Type was not found or was not a compile-time constant: cliente.
cliente es el nombre de instancia de mi movieclip q esta fuera del stage
sabrian q sucede??
Por Cesar Azuero el 17 de Febrero de 2009
Por Sebastian el 24 de Febrero de 2009
Por ana el 19 de Abril de 2009
alguien podria ayudarme
Por dashpaul el 24 de Abril de 2009
Por Dasnico el 23 de Agosto de 2009
saludos
Por Zorel el 16 de Octubre de 2009
El comentario de arriba tiene toda la razon, ahora con as3 basta que codie el codigo de zguillez en alguna carpeta y ya tengo nuevamente el duplicaMovieClip de as2
Por orochies el 09 de Enero de 2010
Por orochies el 09 de Enero de 2010
Que cambios ha que hacer para que se puedan duplicar objetos de una aplicación hecha en Flex???
Por Leviath el 09 de Marzo de 2010
las desventaja es:
Al momento de empezar la produccion de aplicaciones interactivas o web, necesitas agilidad para finalizarlas y entregarlas al cliente. Lo q significa q con el AS2 ya no es muy posible ya que requiere un poco mas de conocimiento sobre el tema.(se que si tienes conocimiento en programacion esto va a ser sencillo, pero no hay que olvidar que tanto la programacion como el disenio, son areas que deben trabajar en conjunto para que el producto final sea entregado con exito y calidad)
ahora.... estos ultimos anios se ha visto una tendencia bastante evidente, de que diseniadores se creen programadores y tambien de que programadores se creen diseniadores... con este cambio en la programacion AS3 creo q esta tendencia va ser mas notoria ya que a nadie le gusta tener q contratar a un diseniador o un programador (cosa q es bastante obvia
Si fue algo bueno o malo este cambio solo el tiempo lo dira.....
Por no me funciona... el 21 de Marzo de 2010
PREGUNTA: duplica objetos de la linea del tiempo o tambien objetos generados mediante AS3?
Gracias por la ayuda
Por Dk el 01 de Mayo de 2010
1172: Definition com.zguillez.as3:Tools could not be found.
1046: Type was not found or was not a compile-time constant: mcHumo1.
1172: Definition com.zguillez.as3:Tools could not be found.
1120: Access of undefined property Tools.
En principio he creado un archivo Tools.as en el mismo directorio, y he copiado y pegado el código, mcHumo1 le he dado la propiedad Linkage de Export for ActionScript
Si me podeis orientar os lo agradezco, por que estoy empezando a programar AS3 y no me termino de aclarar.
Muchas gracias
Por Dk el 12 de Mayo de 2010
No tengo prisa... pero al final me va a pillar el toro jajaj
Muchas gracias
Por maria el 15 de Abril de 2011
Estoy utilizando este método y si le pasas un MovieClip no funciona claro, porque se le ha de pasar un DisplayObject.
Resulta que tampoco se puede hacer un cast de MovieClip a DisplayObject....tipo var obj:displayObject=new DisplayObject();
var mc:MovieClip;
obj=DisplayObject(mc);
No entiendo porque ya que un Mc es un DisplayObject
¿Como podría hacerlo por favor?
Por exekiel21 el 07 de Octubre de 2011
Si x ejemplo creo una instancia de clip, le modifico un campo de texto que tiene y le aplico este duplicate,,,, el campo de texto del supuesto duplicado aparece en blanco.