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;
}
}
}
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.
Zguillez, yo ya había mencionado (2 veces) como duplicar un MovieClip en mis Tips
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:Zguillez
queeeeee porqueria dios mio tantas lineas para lo q antes hacias en una no entiendo x q nos complicaron tanto gracias Adobe se les aprecia Por:hellrider_blog
hellrider_blog :
queeeeee porqueria dios mio tantas lineas para lo q antes hacias en una no entiendo x q nos complicaron tanto gracias Adobe se les aprecia
Así habla un desarrollador consumado ¿Cuándo sea grande puedo ser como tú? Por:The Fricky!
"queeeeee porqueria dios mio tantas lineas para lo q antes hacias en una no entiendo x q nos complicaron tanto gracias Adobe se les aprecia"
yo tampoco se como diseñadores graficos o fanaticos se creen programadores... Por:Diegoazul_blog
Me tomé una atribución (perdón zguillez) de hacerle un update a la versión original para que también tome un nombre el MC duplicado y que tome un Depth... para que tenga la misma funcionalidad de la clase de AS2...
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:eguy_blog
Si bien es más complicado, también se puede decir que es más interesante esto del nuevo actionscript 3, pero bueno, se sabe que flash fue creado para diseñadores web, y no para personas enfocadas por completo a la programación en sí, y esto de actionscript sí que se está volviendo por completo una tarea para personas especializadas en la programación, con esto más bien pareciera que se esta creando un nuevo ambiente en flash para que diseñadores y programadores trabajen de la mano, porque vaya que es complicado el nuevo lenguaje. Sé que muchos programadores experimentados de aquí dirán que no es complicado, pero tomen en cuenta que no todos tenemos los conocimientos previos que ustedes tienen, solo es cuestión de paciencia, supongo, pero de verdad que actionscript va en evolución y así como da un poco de frustración también da mucho gusto que se vea esa evolución y que de paso nos den nuevas cosas con que entretenernos. Por:Señor Oz_blog
(con todo respeto a muchos programadores), eso de que es una porqueria tener que hacer todas esas lineas para lo que antes se hacia con una... realmente es una porqueria, ya que el trabajo del programador se hace mas grande al querer hacer algo que antes ya existia (el hilo negro), no estoy encontra de la nueva estandarizacion de AS3 pero si les falto crear mas clases o codigo para evitar reescribir codigo... y migrar proyectos de AS2 a AS3 realmente resulto complicado, quedo un codigo mas limpio pero hizo la necesidad de reescribir codigo que ya antes existia, es mas facil comenzar un proyecto de 0 que migrar =(, sin contar que sera necesario "programar" las animaciones, y lo que me gustaba era que podia pasar 60% del tiempo diseñando y animando y 40% programando ahora paso 60% diseñando y 70% programando su animacion =)... bueno no todo es malo, si se hace una aplicacion de tipo formularios, uno si que termina mucho mas rapido =D (aprox 50% mas rapido), la verdad esta mejora solo es para programadores y NO para diseñadores, lastima por los que tenemos que hacerla de ambos... pues en tiempo quedamos igual =( Por:Carlos_blog
También veo que la libertad de expresión en este blog es dudosa. He publicado 2 comentarios diciendo que as3 es un bazofia y los han borrado. Genial ! Por:Libertad-blog
tú te crees Por:puuuuuuuuuufff-blog
tú te crees que para duplicar un puto clip tengas que escribir la biblia en verso?? Por:arggg-blog
hola, la primera clase me sale error:
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:daniel-blog
Excelente trabajo!!!!! Gracias por tus aportes. Por:Cesar Azuero-blog
No hay manera mas simple de duplicar un mc? es necesario una clase para algo que en AS2 era tan sencillo? Por:Sebastian-blog
Hola, alguein podria ayudarme, tengo un problema, es sobre una postal, se supone que al entrar el usuario, de numbre y edad, y al presionar el boton, salgan globos, conform el numero de años tiene.
alguien podria ayudarme Por:ana-blog
Hola Carlos_blog, por qué dices "hizo la necesidad de reescribir codigo que ya antes existia" AS3 es lejos mejor que AS2, además los PAQUETES o "PACKAGE" tienen la intención de que se vuelvan a utilizar en un futuro(REUTILIZABLES), esa es la idea no??.. hay algo mejor que eso?? yo creo que nos estabamos acostumbrando a que todo fuera facil como "haciendo clic en un boton, uno que otro copy paste, y tuvieramos una aplicación ... asi no es la cosa... lo que es yo tengo una carpeta donde guardo todoas mias clases y las adapto a mis necesidades, y te digo con AS3 si eres ordenado pudes llegar a trabajar el doble de rapdio que con AS2 y obviamente es mas solido y con muchas más opciones.
saludos Por:Dasnico-blog
No hay manera mas simple de duplicar un mc? es necesario una clase para algo que en AS2 era tan sencillo?
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:Zorel-blog
Funciona a la perfección, muchas gracias Zguillez Por:lucaz
en mi opinion todos los que han comentado en contra de as3 me parece que odian la programación orientada a objetos, si bien flash cs4 acepta la programacion antigua me parece que la orientada a objetos es la que reina en estos momentos, diseñadores por favor trabajemos en conjunto y no hablen de algo que apenas conocen, arriba cs3, adios as2. Por:orochies
perdon mis ultimas palabras son en realidad "arriba as3 adios as2", jejeje esque con la euforia de los comentarios anterios me encendi nomas tantito. Por:orochies
esta muy bueno, pero en flex no funciona.
Que cambios ha que hacer para que se puedan duplicar objetos de una aplicación hecha en Flex??? Por:diego1311
mmm Sigo pensando que el as2 es mas rapido, este cambio a as3 lo hicieron para que hubiese mas trabajo en grupo entre diseniador y programador, ya que con el As2... que era mas amigable; el programador estaba siendo remplazado por simples codigos basicos que podian ser resueltos por personas con poca experiencia en programacion. Hay ventajas en esto, como: mas trabajo para programdores y mas libertades en la programacion AS3
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 a nadie le gusta tener dividir las ganancias). Bueno, ya estoy enredando el asunto ajjaja.
Si fue algo bueno o malo este cambio solo el tiempo lo dira..... Por:Leviath-blog