Comunidad de diseño web y desarrollo en internet online

Duplicar MC tras carga de XML básico en AS3

Citar            
MensajeEscrito el 25 May 2009 09:15 am
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

Código :

<?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

Código :

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

Por dazao

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 May 2009 09:48 am
Al final lo he solucionado asi, que seguro que es cutre, asi que si alguien puede iluminarme

Código :

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

Por dazao

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 May 2009 02:28 pm
Dazao, creo que lo único que te falta es una "conversión de cast"

Código ActionScript :

function overBoton(e:MouseEvent):void {
  var c=e.target as MovieClip
  trace(c.link_xml)
}


Si lo que quieres es que te cambie el "mc" interior. Si tiene como nombre de instancia "mc" deberías poner

Código ActionScript :

c = new boton_galerias();
c.mc.addEventListener(MouseEvent.MOUSE_OVER, overBoton)
//aunque, en este caso sería
function overBoton(e:MouseEvent):void {
  var c_mc=e.target as MovieClip
  trace(c_mc.parent.link_xml)  //<--digo "parent", puesto que link_xml "pertenece" a "c"
}

Por Eliseo2

710 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.