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:
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.Ver original
stop(); 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);
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