En la tercera versión ActionScript (AS3) nos encontramos con que muchas de las funciones a las que estábamos acostumbrados ya no están o han cambiado. Una de ellas es el attachMovie. Para quien no lo sepa, el attachMovie te permitía traer elementos de la biblioteca de tu SWF (previamente exportados con un "id") en tiempo de ejecución al escenario. Lo que daba la posibilidad de cargar objetos pasándole como argumento una variable. Por ejemplo :
Código :
var linkageName:String = "clip"; _root.attachMovie(linkageName, "nuevoNombre", 42);
"clip" es un objeto de la biblioteca con ese nombre de exportación
En AS3, el sustituto natural es addChild, el cual requiere un objeto instanciado de una clase, y es más, ahora al exportar en la biblioteca no le damos un "id", sino una clase (Class), por lo que ya no podemos pasarle una variable a un constructor. Esto NO funcionaría :
Código :
var linkageName:String = "objetoExportado"; var objetoInstanciado:Object = new linkageName();
Para solucionar esto tenemos el método getDefinitionByName() (del paquete flash.utils). El nuevo código quedaría así :
Código :
import flash.display.DisplayObject; import flash.display.Sprite; import flash.utils.getDefinitionByName; var ClassReference:Class = getDefinitionByName("objetoExportado") as Class; var instance:Object = new ClassReference(); addChild(DisplayObject(instance));
"objetoExportado" es un objeto de la biblioteca exportado con esa clase
Ahora nos surge un problema, y es que en AS2 podíamos hacer un attachMovie a un objeto de un SWF cargado dinámicamente, por ejemplo :
Código :
_root.contenedor.loadMovie("objetos.swf"); function test() { clearInterval(idset); _root.contenedor.attachMovie("objetoExportado","nuevoNombre",666); }; //El setInterval sólo es para esperar a que cargue el objetos.swf // En local la carga es casi instantánea y 3 segundos es más que suficiente, // en la web deberías de esperar a que se cargase al 100% con métodos como el MovieClipLoader idset = setInterval(test,3000);
"objetoExportado" es un objeto de la biblioteca con ese nombre de exportación que está en objetos.swf. Desde OTRO swf cargamos objetos.swf
Si probamos el código anterior de AS3, nos dará como resultado que la variable "objetoExportado" no está definida, y es que getDefinitionByName, sólo funciona cuando el objeto exportado está en el mismo SWF. Para solucionar esto, tenemos que usar getDefinition (la cual ya no es un método del paquete flash.utils, si no que se pierde entre las propiedades y métodos de los loaders, displaysObjects y demas)
Código :
import flash.display.*; import flash.net.URLRequest; var ldr:Loader = new Loader(); var url:String = "objetos.swf"; var urlReq:URLRequest = new URLRequest(url); ldr.load(urlReq); addChild(ldr); function prueba(){ clearInterval(idset); var clase:Class = ldr.contentLoaderInfo.applicationDomain.getDefinition("objetoExportado") as Class; var mc = new clase(); this.addChild(mc); } // el setInterval vuelve a ser para asegurarse de que el objetos.swf está cargado //En local funciona, en la web habría que esperarse a que cargara al 100% por otros métodos. idset = setInterval(prueba,3000);
"objetoExportado" es un objeto de la biblioteca exportado con esa clase que está en objetos.swf. Desde OTRO swf cargamos objetos.swf
Espero que les sea útil.
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por Zguillez el 09 de Septiembre de 2006
Por Zah el 09 de Septiembre de 2006
Pd: Y yo que estaba haciendo un tuto sobre esto en AS2
Por Freddie el 09 de Septiembre de 2006
zah :
Por _CONEJO el 09 de Septiembre de 2006
Freddie® :
zah :
AS2 aún vivirá largo entre nosotros, es hoy en día y la gente sigue usando el telltarget y la sintaxis de barra...
Por Carmen el 09 de Septiembre de 2006
_CONEJO :
Cierto Conejo , cierto, muchos de nosotros aún amamos attachMovie..Pero Shhhhhhhhhh
Por Freddie el 09 de Septiembre de 2006
Por FeNtO el 09 de Septiembre de 2006
Freddie® :
estan viendo qu ecada dia me quedo mas ciego con la mugre computadora y todavia escriben en miniatura
en definitiva un nuevo mundo AS3
Por bicho_O el 10 de Septiembre de 2006
Por noctam el 10 de Septiembre de 2006
Cuando no has terminado de aprender a usar AS2 cogen y te lo cambian todo de nuevas con AS3...a ver cuando sacan un AS que este en condiciones y no te vengan con tanta historia ni tanto cambio, porque a mi ya me tienen aburrio, cuando aprendes a hacer algo te viene una nueva version y tienes que empezar de cero
un punto a adobe por hacer el dia a dia un poco mas tortuoso
Por nestorrente el 10 de Septiembre de 2006
P.D. para NOCTAM_BLOG: Viva Cálico, sí señor
Por Freddie el 10 de Septiembre de 2006
Es recomendado usarlos, porque es mucho más rapido instanciar un Sprite dinamicamente que un Movie Clip. Ademas, con un Sprite no cargas en memoria toda una linea de tiempo, como si lo harías con un Movie Clip.
Por martinpulido el 10 de Septiembre de 2006
Por Freddie el 10 de Septiembre de 2006
Ahora claro, si vas a cargar dinamicamente una animación, pues usas Movie Clips
Por zah el 11 de Septiembre de 2006
Ya, pero ¿como se dibujan a mano (no por código) los sprites?, porque la biblioteca sólo admites mcs, gráficos (sin vinculación) y buttons
Por cierto, a qué viene lo de complicarse tanto la vida. Si tengo un clip con una clase llamada square:
Código :
Por Dave73 el 11 de Septiembre de 2006
Quise hacer una ventanita y poder hacer drag. Estuve 3 horas y no me salió.
pd: alguien me pasa alguna referencia de AS3 y como usarlo en Flex?
Por Sandy el 11 de Septiembre de 2006
saludos
Por Zah el 11 de Septiembre de 2006
http://livedocs.macromedia.com/flex/2/langref/
Por vanvanero el 11 de Septiembre de 2006
Puede que este lo hagan en pro de hacer a flash y el AS3 cada vez mas Orientado a objetos y Orientado a Servicio, pero se les olvida que con tanta versión, lo único que se logra es hacer que todas las personas que algun dia nos enamoramos de flash desertemos por que deja la sensación de tener una plataforma inestable. Si pensaran mas como Ingenieros y menos como programadores los desarrolladores en Adobe, tendrían un proyecto con políticas claras que esten en pro de nosotros los consumidores y que si en últimas se mejora una versión, sea consecuente con las anteriores y por último si los cambios son extremos como en este caso, sea paralelo a una campaña educativa (no solo comercial), creo que así se pierde muchas cosas que venian evolucionando en flash y el AS.
Por dave73 el 11 de Septiembre de 2006
Por _CONEJO el 13 de Septiembre de 2006
Por pbl el 05 de Octubre de 2006
Por Freddie el 05 de Octubre de 2006
Me duele el cambio y aprender cosas nuevas aunque no tenga idea si son para bien o para mal. ¡¡No quiero más dolor!!
Hay psicologos buenos que puedes encontrar por las paginas amarillas.
Por Zah el 07 de Octubre de 2006
Código :
Con flash 8 tarda algo más de 10 segundos para n=25000 y da error para n=35000. Con flash 9, tarda 1 segundo y no da error hasta n=110000
pd: a ver si alguien puede optimizar esto.
Por Paulo el 31 de Octubre de 2006
Para cuando un browser ajax enabled?
Por apache 2.0 el 16 de Noviembre de 2006
eso sí,por preguntar,que no lo he probado:¿se pueden meter trozos e as 2 en as3 con alguna function()?
jo, aun no he aprendido as2, tengo 9 exámenes y las profesoras vienen con la cafeina por las nubes al ponernos exámenes y... TOMA AS3 PA´TU CUERPO!!
padre nuestro,
que no estas en macromedia,
salva a los lusers que intentan
aprender flash
y a los novatos en as3,...
:s
Por usER el 16 de Diciembre de 2006
pregunto...
Prefiero un lenguaje divertido, donde una vez aprendido, disfrute inventando, creando, y de vez en cuando pueda ver la luz del sol.
No te permiten ser creativo, no te dan tiempo para disfrutar programando.
Por Freddie el 16 de Diciembre de 2006
usER_blog :
Por _CONEJO el 16 de Diciembre de 2006
usER_blog :
Con AS3 se amplian las posibilidades de Flash, por ejemplo un VNC, un emulador de C64, un "Messenger", y estoy hablando de los primeros ejemplos que han visto la luz (si, todas esas cosas existen y funcionan). Si eso no te abre las puertas para ser creativo... no sé que lo hará.
Por adlinkas el 03 de Abril de 2007
Por jaimoco el 29 de Mayo de 2007
Se han hallado los números primos hasta 25000 en 0.785 segundos
impresionante
Por Gabio el 04 de Junio de 2007
Por Karacas el 06 de Diciembre de 2007
Porque tantas quejas?
Por Agof el 01 de Abril de 2008
desde luego as3 es impresionante
Por Juan Muro el 08 de Mayo de 2008
Salu2
`8¬]
Juan Muro
Por MrG el 10 de Julio de 2008
y otros clabs y el resto del mundo...
pues animos y aprendan as3, flash siempre fue técnico y lo seguira siendo...
Por ANGEKO el 15 de Septiembre de 2008
Por pulento el 26 de Noviembre de 2008
De ser asi todavia estariamos usando ruedas cuadradas por lo dificil de hacerlas redondas..
Mi opinion es que si te metes a programar en un lenguaje determinado, lo debes hacer en forma seria, con la idea de aprender lo que contiene, con sus ventajas y desventajas, y luego de una evaluacion decides si es en lo cual te especializaras.
La critica no pasa por si es mas o menos dificil de aprender, sino que pasa por las ventajas y mejoras con respecto a la o las versiones anteriores.
En este caso AS3 las tiene de sobra.
Y la clave de la web no es solamente que sea liviano y sencillo...como dijo alguien en este post.. sino que lo mas importante es que sea robusto y confiable a todas o la mayoria de las pruebas y test a los que sea puesto.
Y lo mejor en este caso es la programacion OOP pura.. y AS3 se esta acercando a esta
Saludos
Por JaLeRu el 12 de Febrero de 2009
¿No es más facil hacer...?
Código :
¿NO es más simple? o tiene desventajas?
Por jabarua el 08 de Abril de 2009
Por Pludo el 14 de Mayo de 2009
Ya todos sabemos que flash 8 trabajaba por dentro con clases, pero ¿que tengamos que hacerlo nosotros también lo hace mejor?... más robusto quizás, sí, pero conozco dibujantes buenísimos que antes eran capaces de comprender algo de as2, lo cual multiplicaba su potencial como animadores y creadores de contendio multimedia y ahora pasan de meterse en el berengenal de as3. Ahora flash se convertirá en un entorno excluyente, cuando el mérito que tuvo fué precisamente que nunca excluyó a nadie, ahora, cada vez más, es para programadores sin puñetero sentido estético.
Otra vez la obsolescencia programada.
Por nestorrente el 09 de Agosto de 2009
Código :
Por nestorrente el 09 de Agosto de 2009
Por Juan el 10 de Diciembre de 2009
Los diseñadores seguiréis teniendo el 2 pero yo voy a ir dándole al 3 que ya parece algo mas serio que decidan por ahi arriba y cuando necesite estetica ya contrataré un diseñador.
Por eli el 28 de Enero de 2010
addChild(DisplayObject(instance));
Sin embargo no se si DisplayObject(instance) es una funcion? o un constructor o que, porque por mas que busco en la ayuda del Flash no lo encuentro como funcion o metodo o algo que me explique porque se puede usar de este modo.
Por alex el 24 de Mayo de 2010
Y para eliminar sería removeChild, que equivale a removeMovieclip...no?
Uff, con los cambios..
Por Lekofev el 24 de Junio de 2010