Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2010, 08:45
JMCV
 
Fecha de Ingreso: agosto-2009
Mensajes: 35
Antigüedad: 15 años, 4 meses
Puntos: 0
Pasar valores de variables entre 2 swfs en AS3

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 original
  1. stop();
  2.  
  3. import caurina.transitions.*;
  4.  
  5.  
  6.  
  7.  
  8. sb.visible=false;
  9.  
  10. import flash.text.Font;
  11.  
  12. var carga:URLLoader = new URLLoader();
  13. var xmlExterno:XML;
  14. var i:Number=0;
  15. var a:Number=0;
  16. var m:Number=0;
  17. var lista:XMLList;
  18. var loc:Number;
  19.  
  20. var total:Number;
  21.  
  22. var peticion:URLRequest=new URLRequest();
  23. peticion.url="peliculas.xml";
  24.  
  25.  
  26. function cargarXML(event:Event){
  27.     loc=15;
  28.     xmlExterno = new XML(event.target.data);
  29.     lista=xmlExterno.children();
  30.    
  31.     total=lista.length();
  32.    
  33.    
  34.    
  35.     trace("Total: "+total);
  36.     trace("Total2: "+total_2);
  37.     trace(lista[i].descendants("pelicula"));
  38.    
  39.    
  40.    
  41.     for(i=0;i<total;a++){
  42.         var caja:TextField=new TextField();
  43.             if(a==total_2){
  44.             i++;
  45.             a=0;
  46.            
  47.             }
  48.             if(i==total-1 && a==total_2-1){
  49.                 cargador.addChildAt(caja,0);
  50.                 break;
  51.             }
  52.            
  53.             var lista_2:XMLList=lista[i].elements("peliculas");
  54.             var total_2=lista_2.pelicula.length();
  55.    
  56.             var contenido=lista[i].descendants("pelicula")[a].attribute("nombre");
  57.         trace(contenido);
  58.         trace("i: "+i);
  59.         trace("a: "+a);
  60.         m++;
  61.        
  62.         caja.autoSize=TextFieldAutoSize.LEFT;
  63.        
  64.         caja.selectable=false;
  65.        
  66.  
  67.        
  68.         var font:Font = new Gill(); //from library
  69.  
  70.     var format:TextFormat = new TextFormat();
  71.     format.font = font.fontName;
  72.  
  73.     caja.embedFonts = true;
  74.  
  75.     caja.setTextFormat(format);
  76.    
  77.         caja.y=loc;
  78.         if(a==0){
  79.            
  80.             caja.x=40;
  81.             caja.htmlText="<font color='#000000'><font face='"+font.fontName+"'><font size='20'><b>"+contenido+"</b></font></font></font>";
  82.             var linea:MovieClip = new MovieClip();
  83.             var circulo:MovieClip=new MovieClip();
  84.             circulo.graphics.beginFill(0xBB1E3B,1);
  85.             circulo.graphics.drawCircle(0,0,12);
  86.             circulo.x=20;
  87.             circulo.y=loc+circulo.height/2;
  88.            
  89.             var no:Number=i+1;
  90.            
  91.             var numero:TextField=new TextField();
  92.             numero.htmlText="<font color='#FFFFFF'><font face='"+font.fontName+"'><font size='18'><b>"+no+"</b></font></font></font>";
  93.             cargador.addChild(circulo);
  94.            
  95.             cargador.addChild(numero);
  96.             numero.x=circulo.x-circulo.width/4;;
  97.             numero.y=circulo.y-circulo.height/2;
  98.             numero.width=circulo.width-circulo.width/4;
  99.             numero.height=circulo.height;
  100.             numero.selectable=false;
  101.             numero.embedFonts=true;
  102.             numero.setTextFormat(format);
  103.  
  104.             if(i!=0){
  105.  
  106.                 linea.graphics.lineStyle(1, 0xBB1E3B, 1,false, LineScaleMode.NORMAL, CapsStyle.NONE, JointStyle.BEVEL, 3);
  107.    
  108.                 linea.graphics.moveTo(0,0); ///Desde donde se comienza a dibujar
  109.                 linea.graphics.lineTo(stage.stageWidth-stage.stageWidth/4, 0);//(hasta x, hasta y)
  110.                 linea.x=circulo.x;
  111.                 linea.y=loc-4;
  112.                 cargador.addChild(linea);
  113.             }
  114.            
  115.             loc+=25;
  116.            
  117.         }
  118.         else if(a==total_2-1){
  119.             caja.x=80;
  120.         caja.htmlText="<font color='#000000'><font face='"+font.fontName+"'><font size='16'><b>"+contenido+"</b></font></font></font>";
  121.             loc+=40;
  122.         }
  123.         else{
  124.             caja.x=80;
  125.         caja.htmlText="<font color='#000000'><font face='"+font.fontName+"'><font size='16'><b>"+contenido+"</b></font></font></font>";
  126.             loc+=25;
  127.         }
  128.         trace("Loc: "+loc)
  129.        
  130.         var contenedor:MovieClip=new MovieClip();
  131.         var boton:SimpleButton=new SimpleButton;
  132.         var up:Sprite = new Sprite();
  133.         up.graphics.beginFill(0xFF9900,0);
  134.         up.graphics.drawRect(0, 0, caja.width, caja.height);
  135.  
  136.         boton.upState=up;
  137.         //boton.downState=up;
  138.         //boton.overState=up;
  139.         boton.hitTestState=up;
  140.         boton.enabled=true;
  141.         boton.x=caja.x;
  142.         boton.y=caja.y;
  143.         boton.width=caja.width;
  144.         boton.height=caja.height;
  145.         boton.useHandCursor=true;
  146.         cargador.addChildAt(caja,0);
  147.         cargador.addChildAt(contenedor,1);
  148.         contenedor.addChild(boton);
  149.        
  150.  
  151.        
  152.         boton.name="boton"+i+"_"+a;
  153.         boton.addEventListener(MouseEvent.CLICK, ir);
  154.     }
  155.  
  156.    
  157.  
  158.    
  159.    
  160. }
  161.  
  162.  
  163.  
  164.     carga.load(peticion);  
  165.     carga.addEventListener(Event.COMPLETE,cargarXML);    
  166.  
  167.  
  168.  
  169. function ir(e:MouseEvent){
  170.     var convertidor:String=e.target.name.toString();
  171.  
  172.     i=Number(convertidor.substring(5,6));
  173.     a=Number(convertidor.substring(7,8));
  174.     trace("i: "+i);
  175.     trace("a: "+a);
  176.    
  177.  
  178. }
  179.  
  180.  
  181. function desaparecer(e:Event){
  182.     if(cargador.height<=372.8){
  183.         sb.scroller.y=0;
  184.         sb.visible=false;
  185.         loc=0;
  186.         cargador.y=149.9;
  187.     }
  188.     else{
  189.         sb.visible=true;
  190.     }
  191. }
  192.  addEventListener(Event.ENTER_FRAME, desaparecer);
  193.  
  194.   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

Última edición por JMCV; 15/04/2010 a las 09:05