Comunidad de diseño web y desarrollo en internet online

pasar variable de un swf a otro para cargar txto desde mysql

Citar            
MensajeEscrito el 09 Nov 2008 09:09 pm
Hola,

Tengo un swf que genera un listado de botones títulos de noticias tirando de un php que tira de una DB mysql con un
for(var i:Number = 1; i<=ligne; i++)
(ligne siendo el numero de lineas de la db, devuelto por el archivo php)

Al pinchar el botón del titulo de una noticia, carga un swf que tiene que enseñar el artículo.

Para eso, dentro del for i, puse un onRelease que entre otras cosas contiene el loadMovie, y un variable global que memoriza el valor del i correspondiente al boton:

Código :

var articlenum:Number;
_global.articlenum = i;


En el swf cargado, que nos enseña el articulo entero, recibe por un archivo php los siguientes valores:
article_1, article_2, article_3 etc...

Si cargo en un campo de texto dinamico el valor de article_3 de esta forma, me funcciona:

Código :

article.htmlText = this["article_"+3];


Pero si lo cargo intentando usar el numero de articulo que envia el swf padre, no me funcciona. Lo hago asi:

Código :

 article.htmlText = this["article_" + _global.articlenum];


he comprobado con un trace que _global.articlenum funcciona bien.

Evidentemente, lo hago mal. ¿Como hacer esto?
Gracias.

Un saludo.

Por z7

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Nov 2008 03:14 pm
El uso de la "i" dentro del "onRelease" que esta dentro del "for" es incorrecto, ya que la "i".

Lo que tienes que hacer es guardar el valor de "i" en la instancia de cada boton creado:

por ejemplo si tu boton se llama: _root["btn" + i]
entonces guardas el valor de "i" antes de declarar la función onRelease con:

Código :

_root["btn" + i].nBtn = i

y en el "onRelease" usas este valor:

Código :

_global.articlenum = this.nBtn;

pero antes debes de declarar la variable global antes del "for" y fuera del onRelease, para que no se este declarando a cada rato.

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 04 Dic 2008 09:22 am
Hola,
Gracias por tu respuesta.
He probado eso pero no va, el swf cargado me devuelve un undefined en vez del articulo.
Creo que fallo declarando _global.articlenum fuera del for...? (linea 11 del 1er código que pego)

Pego aqui parte del código utilisado:

Para el flash que genera el listado de botones con titulo de artículo:

Código :

this.onData = function () {
    
   //---Variables 
   var boton:MovieClip; 
   var fondo:MovieClip; 
   var texto:TextField; 
   var estilo:TextFormat = new TextFormat(); 
   var ancho:Number; 
   var alto:Number; 
   var posY:Number = 0; 
   var _global.articlenum:Number;
    
   with(estilo){ 
      font = "Arial"; 
      size = 11; 
      color = 0x000000; 
      border = true;
   } 
   
   //---Ciclo de crear los botones y darle acciones 
   for(var i:Number = 1; i<=ligne; i++){ 
      
      boton = this.createEmptyMovieClip("boton" + i, this.getNextHighestDepth()); 
      fondo = boton.createEmptyMovieClip("fondo", boton.getNextHighestDepth()); 
      texto = boton.createTextField("texto", boton.getNextHighestDepth(), 0, 0, 235, 0); 
      
      //---Crear el texto 
      with(texto){ 
        text = this["tit_"+i]; 
        autoSize = true; 
        wordWrap = true; 
        embedFonts = true;
        setTextFormat(estilo); 
   } 
      
      //---Dibujar el fondo depende de las medidas del texto    
      ancho = texto._width; 
      alto = texto._height; 
      
      with(fondo){ 
        beginFill(0x000000, 0); 
        moveTo(-2, -2); 
        lineTo(ancho + 4, -2); 
        lineTo(ancho + 4, alto + 17 + 4); 
        lineTo(0, alto + 17 + 4); 
        lineTo(0, 0); 
        endFill(); 
      } 
      
      //---Situar los botones 
      boton._y = posY; 
      posY += boton._height + 5; 
      
      //---Acción de los botones 
      
      this["boton" + i].nBtn = i; 
      
      boton.onRelease = function():Void{ 
        this._parent._parent._parent._parent._parent._parent.createEmptyMovieClip("popup", this.getNextHighestDepth()); 
        this._parent._parent._parent._parent._parent._parent.popup.loadMovie("expositor_popup.swf");
        this._parent._parent._parent._parent._parent._parent.popup._x = Stage.width / 2;
        this._parent._parent._parent._parent._parent._parent.popup._y = 120;
        _global.articlenum = this.nBtn;
      } 
      
   } // fin for i
} // fin onData

stop();


Y para el flash que luego genera el articulo correspondiente al boton pinchado (expositor_popup.swf):

Código :

this.onData = function () {
 
   //---Variables 
   var article:TextField; 
   var estilo:TextFormat = new TextFormat(); 
   var i:Number; 
   
   with(estilo){ 
      font = "Arial"; 
      size = 11; 
      color = 0x000000; 
      border = true;
   }
   
   //---Crear el articulo 
   article = this.createTextField("article", this.getNextHighestDepth(), 31/*533*/, 100, 460, 0); 
   article.html = true;
   article.htmlText = this["intro_"+_global.articlenum];
   
   with(article){ 
     autoSize = true; 
     wordWrap = true; 
     embedFonts = true;
     setTextFormat(estilo);
   } 
     
     import TextField.StyleSheet;
         var css:StyleSheet = new StyleSheet();
         css.parseCSS("a{color:#FF0000; text-decoration:none;} a:hover{text-decoration:underline;}");
     article.styleSheet = css;
     
} // fin on data


Gracias.
Un saludo.

Por z7

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Dic 2008 10:56 am
ok, perdón, el "var _global.articlenum:Number;" lo plantaba todo (error de sintaxis).
Lo he quitado y va eso de varavilla, gracias ;)

Por z7

20 de clabLevel



 

firefox

 

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