Hola, buenos dias a todos.
Estoy en el curro realizando un indice para un conjunto de animaciones cargadas mediante el XML y tras mucho curro por fin he conseguido un código que me funciona y se me ajusta a lo que quiero.
A continuación, os dejo el código. Ah, por cierto, en el escenario sólo tengo una scrollbar bajo nombre de instancia sb que funciona mediante un .as independiente
Código actionscript:
Ver originalstop();
import caurina.transitions.*;
sb.visible=false;
import flash.text.Font;
var carga:URLLoader = new URLLoader();
var xmlExterno:XML;
var i:Number=0;
var a:Number=0;
var m:Number=0;
var lista:XMLList;
var loc:Number;
var total:Number;
var peticion:URLRequest=new URLRequest();
peticion.url="peliculas.xml";
function cargarXML(event:Event){
loc=15;
xmlExterno = new XML(event.target.data);
lista=xmlExterno.children();
total=lista.length();
trace("Total: "+total);
trace("Total2: "+total_2);
trace(lista[i].descendants("pelicula"));
for(i=0;i<total;a++){
var caja:TextField=new TextField();
if(a==total_2){
i++;
a=0;
}
if(i==total-1 && a==total_2-1){
cargador.addChildAt(caja,0);
break;
}
var lista_2:XMLList=lista[i].elements("peliculas");
var total_2=lista_2.pelicula.length();
var contenido=lista[i].descendants("pelicula")[a].attribute("nombre");
trace(contenido);
trace("i: "+i);
trace("a: "+a);
m++;
caja.autoSize=TextFieldAutoSize.LEFT;
caja.selectable=false;
var font:Font = new Gill(); //from library
var format:TextFormat = new TextFormat();
format.font = font.fontName;
caja.embedFonts = true;
caja.setTextFormat(format);
caja.y=loc;
if(a==0){
caja.x=40;
caja.htmlText="<font color='#000000'><font face='"+font.fontName+"'><font size='20'><b>"+contenido+"</b></font></font></font>";
var linea:MovieClip = new MovieClip();
var circulo:MovieClip=new MovieClip();
circulo.graphics.beginFill(0xBB1E3B,1);
circulo.graphics.drawCircle(0,0,12);
circulo.x=20;
circulo.y=loc+circulo.height/2;
var no:Number=i+1;
var numero:TextField=new TextField();
numero.htmlText="<font color='#FFFFFF'><font face='"+font.fontName+"'><font size='18'><b>"+no+"</b></font></font></font>";
cargador.addChild(circulo);
cargador.addChild(numero);
numero.x=circulo.x-circulo.width/4;;
numero.y=circulo.y-circulo.height/2;
numero.width=circulo.width-circulo.width/4;
numero.height=circulo.height;
numero.selectable=false;
numero.embedFonts=true;
numero.setTextFormat(format);
if(i!=0){
linea.graphics.lineStyle(1, 0xBB1E3B, 1,false, LineScaleMode.NORMAL, CapsStyle.NONE, JointStyle.BEVEL, 3);
linea.graphics.moveTo(0,0); ///Desde donde se comienza a dibujar
linea.graphics.lineTo(stage.stageWidth-stage.stageWidth/4, 0);//(hasta x, hasta y)
linea.x=circulo.x;
linea.y=loc-4;
cargador.addChild(linea);
}
loc+=25;
}
else if(a==total_2-1){
caja.x=80;
caja.htmlText="<font color='#000000'><font face='"+font.fontName+"'><font size='16'><b>"+contenido+"</b></font></font></font>";
loc+=40;
}
else{
caja.x=80;
caja.htmlText="<font color='#000000'><font face='"+font.fontName+"'><font size='16'><b>"+contenido+"</b></font></font></font>";
loc+=25;
}
trace("Loc: "+loc)
var contenedor:MovieClip=new MovieClip();
var boton:SimpleButton=new SimpleButton;
var up:Sprite = new Sprite();
up.graphics.beginFill(0xFF9900,0);
up.graphics.drawRect(0, 0, caja.width, caja.height);
boton.upState=up;
//boton.downState=up;
//boton.overState=up;
boton.hitTestState=up;
boton.enabled=true;
boton.x=caja.x;
boton.y=caja.y;
boton.width=caja.width;
boton.height=caja.height;
boton.useHandCursor=true;
cargador.addChildAt(caja,0);
cargador.addChildAt(contenedor,1);
contenedor.addChild(boton);
boton.name="boton"+i+"_"+a;
boton.addEventListener(MouseEvent.CLICK, ir);
}
}
carga.load(peticion);
carga.addEventListener(Event.COMPLETE,cargarXML);
function ir(e:MouseEvent){
var convertidor:String=e.target.name.toString();
i=Number(convertidor.substring(5,6));
a=Number(convertidor.substring(7,8));
trace("i: "+i);
trace("a: "+a);
}
function desaparecer(e:Event){
if(cargador.height<=372.8){
sb.scroller.y=0;
sb.visible=false;
loc=0;
cargador.y=149.9;
}
else{
sb.visible=true;
}
}
addEventListener(Event.ENTER_FRAME, desaparecer);
sb.init(cargador, "easeOutBack",2,true,2);
El problema llega cuando lo que quiero es pasarle los parámetros i y a al swf principal que carga esta película. He estado buscando mucho y aunque ya he intentado utilizar el LocalConnection (tan solo lo he llegado a utilizar con anterioridad para ejecutar funciones, no para pasar parámetros) no logro que me funcione. Por favor, a ver si algun buen samaritano puede indicarme que código tendría que incluir tanto en este swf como en el de el principal.
Por cierto, a alguien se le ocurre como decirle que tan solo me añada las cajas que tengan un text diferente pero manteniendo el numero asignado a "i" y a "a"?
Muchas Gracias