Duplicar MC tras carga de XML básico en AS3
hola a todos, cada vez creo que soy más tonto, me pongo a escribir en as3 y no me sale nada grrrrrr
en fin
he cargado un xml básico
<?xml version="1.0" encoding="utf-8"?>
<datos>
<registro nombre="el que sea" nombre_xml="galeria1.xml" />
<registro nombre="otro" nombre_xml="galeria2.xml" />
<registro nombre="mas" nombre_xml="galeria3.xml" />
</datos>
Una vez cargado le paso el lenght a otra función para que me duplique movieclips
var contenedor:MovieClip = new MovieClip();
addChild(contenedor);
function initClips(total):void {
var c:MovieClip;
for (var i:Number = 0; i< total; i++) {
trace('hola');
c = new boton_galerias();
c.link_xml= xmlData.registro[i].@nombre_xml
trace (link_xml)//aqui me lo traza bien pero luego no lo pasa al over
c.x=100*i;
c.outPut_txt.text=xmlData.registro[i].@nombre;
c.addEventListener(MouseEvent.MOUSE_OVER, overBoton);
c.addEventListener(MouseEvent.MOUSE_OUT, outBoton);
contenedor.addChild(c);
}
}
function overBoton(e:MouseEvent):void {
TweenLite.to(e.target, .3, {alpha:.8});//alpha out the thumbnails
//trace(event.target);
trace(e.target.link_xml); //no funciona grrrr
}
function outBoton(e:MouseEvent):void {
TweenLite.to(e.target, .3, {alpha:1});//alpha out the thumbnails
trace(e.target.name);
}
El mc está vinculado desde la biblioteca y se llama boton_galerias, contiene un campo de texto dinámico y un movieclip de fondo.
Primer problema, el over me lo hace tanto sobre el mc como sobre el textfield, con lo cual a veces me baja el alfa del fondo y otras del textfield, no puedo hacer que el over sea sobre todo el mc y que me haga un alfa de todo, algo como .parent. ....
Segundo problema, no consigo pasarle la variable link_txt que es la que hará que al clicar cargue otro xml
grrrr, alguien puede decirme un poco que aberraciones estoy cometiendo en el código
muchas gracias
nueve
Hola,
1. Esto se debe a la nueva forma en la que se propagan los eventos en as3 , para algunas cosas mola y para otras es un coñazo :)
Escribe c.mouseChildren = false; y quizá te interese también ponerle c.buttonMode = true; con eso te sale la manita.
2. Imagino que según lo tienes ahora cada vez que pasa por el bucle te la va sobreescribiendo y debería guardar siempre el último.
Mete la variable var c:MovieClip; dentro del bucle.
dazao
si claro se le llama cuando el xml se ha cargado :D
dagi3d
¿todo el chiringuito lo estás montando cuando se llama el método que tú le indicas al añadir el listener Event.COMPLETE?
lo digo porque no si no, no hay garantía alguna de que cuando llegues a ese punto el xml esté cargado correctamente
dazao
pero ya estaban embebidas _D
oskitar
embebe las fuentes para el campo de texto.
Los campos de texto dinámico con fuentes sin embeber + alpha dan problemas. aquí dicen algo http://www.kirupa.com/forum/showthread.php?t=268284
busca por el google para más referencias.
dazao
Al final lo he solucionado asi, que seguro que es cutre, asi que si alguien puede iluminarme
var contenedor:MovieClip = new MovieClip();addChild(contenedor);
import net.wildwinter.Callback
function initClips(este):void {
trace('este ' + xmlData.registro[1].@nombre_xml);
var c:MovieClip;
for (var i:Number = 0; i< este; i++) {
trace('hola');
c = new boton_galerias();
var link_xml= xmlData.registro[i].@nombre_xml
var destino=c.mc;
c.x=100*i;
c.mc.outPut_txt.text=xmlData.registro[i].@nombre;
c.addEventListener(MouseEvent.MOUSE_OVER, Callback.create(overBoton,destino));
c.addEventListener(MouseEvent.MOUSE_OUT, Callback.create(outBoton,destino));
c.addEventListener(MouseEvent.CLICK, Callback.create(pressBoton,link_xml));
contenedor.addChild(c);
}
}
function overBoton(e:MouseEvent,dest):void {
TweenLite.to(dest, .3, {alpha:.8});//alpha out the thumbnails
trace(dest);
}
function outBoton(e:MouseEvent,dest):void {
TweenLite.to(dest, .3, {alpha:1});//alpha out the thumbnails
trace(dest);
}
function pressBoton(e:MouseEvent,dest):void {
trace(dest);
}
gracias