Foros del Web » Creando para Internet » Flash y Actionscript »

Pasar valores de variables entre 2 swfs en AS3

Estas en el tema de Pasar valores de variables entre 2 swfs en AS3 en el foro de Flash y Actionscript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 15/04/2010, 08:45
 
Fecha de Ingreso: agosto-2009
Mensajes: 35
Antigüedad: 15 años, 2 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
  #2 (permalink)  
Antiguo 19/04/2010, 05:23
 
Fecha de Ingreso: agosto-2009
Mensajes: 35
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Pasar valores de variables entre 2 swfs en AS3

Por favor, a nadie se le ocurre cómo se haría?


Gracias.
  #3 (permalink)  
Antiguo 19/04/2010, 09:41
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: Pasar valores de variables entre 2 swfs en AS3

http://www.cristianhernandez.org/blog/?p=88
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #4 (permalink)  
Antiguo 19/04/2010, 09:56
 
Fecha de Ingreso: agosto-2009
Mensajes: 35
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Pasar valores de variables entre 2 swfs en AS3

Gracias el mismo problema, de todas formas creo que seguiría teniendo el mismo problema. Tal vez no me he expresado bien. Pero lo que quiero es pasar el valor de esas variables (no las variables en sí). Es decir decirle desde el swf secundario que mi variable i (definida en ambas películas) es igual a 8(por ejemplo) y que mi variable a (también definida en ambas películas) es igual 18(por ejemplo).

En definitiva controlar elementos de una película desde otras.

Thanx
  #5 (permalink)  
Antiguo 19/04/2010, 11:07
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: Pasar valores de variables entre 2 swfs en AS3

jejej bueno es lo que te he puesto si quieres hacer la comparación de una única variable en varios swf externos la tienes que hacer de un tipo global como lo que te he pasado otra forma mas compleja es que el swf cargado la reciba mediante una función que se ejecute una ves cargada la película ejemplo



Código PHP:
idElement('mi.swf',1)
idElement('mi.swf',2)

function 
idElement(url:String,id:int) {
    var 
loader:Loader=new Loader  ;
    
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,cargaCompleta);
    
loader.load(new URLRequest(dir));
    function 
cargaCompleta(event:Event):void{
        var 
movie:MovieClipevent.target is MovieClip
        movie
.variblePreviaMenteRegistradaIDid
    
}

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #6 (permalink)  
Antiguo 20/04/2010, 01:24
 
Fecha de Ingreso: agosto-2009
Mensajes: 35
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Pasar valores de variables entre 2 swfs en AS3

Gracias Linxcraft. Unas últimas preguntitas. Los idElements que has puesto en el código cuál es el emisor y cuál el receptor y qué son los parametros esos que les pasas(1 y 2),.

Por último, éste es el código que habría que colocar en el receptor, y cómo enviaría los datos desde el emisor?

Muchísimas gracias por tu paciencia.
  #7 (permalink)  
Antiguo 22/04/2010, 10:33
 
Fecha de Ingreso: agosto-2009
Mensajes: 35
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Pasar valores de variables entre 2 swfs en AS3

Alguien sabe como enviar los datos?
  #8 (permalink)  
Antiguo 22/04/2010, 16:01
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: Pasar valores de variables entre 2 swfs en AS3

pensé que ya lo avías resuelto con lo de arriba XDXD bueno aquí te dejo un ejemplo

http://www.megaupload.com/?d=TETFJ0GF

no he puesto las imágenes
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Etiquetas: pasar, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:59.