Comunidad de diseño web y desarrollo en internet online

problemas al cargar variables diferentes txt

Citar            
MensajeEscrito el 30 Sep 2009 07:57 pm
ok explico, estoy haciendo un trabajo en mdm zinc, lo que quiero hacer es que, dinamicamente me aparezca unos botones dependiendo la cantidad de txt que haya en una carpeta, los txt tienen los siguientes datos, como ejemplo:

cartoon.txt
&ruta=www.cartoonnetwork.com

disney.txt
&ruta=www.disney.com

utilizo el siguiente codigo para saber cuantos archivos txt hay en la carpeta y hago un ciclo for para que me recorra los archivos y hago un loadVars por cada boton para cargar los datos de cada txt, el problema es que solo me carga el ultimo siempre, como en esta imagen:



en el flash tengo un movieclip (el cuadro gris) y dentro de este mc, una caja de texto que me carga las variables de cada bloc de notas, este es el codigo que utilizo

Código ActionScript :

var rutas:String = mdm.Application.path+"accesos/internet/";
var archivos:Array = mdm.FileSystem.getFileList(rutas, "*.txt");

cantidad = archivos.length

texto.text = ""
for(i=0;i<cantidad;i++){
   texto.text += archivos[i];
}


for(i=0; i<cantidad; i++){

var cargador_lv:LoadVars = new LoadVars();

cargador_lv.onLoad = function(exito) {
   
   if (exito) {
      
      _root.mi_mc.duplicateMovieClip("mc"+i,i)
   _root["mc"+i]._y = (mi_mc._height+5)*i + mi_mc._y;
   _root["mc"+i].textos.text = this.ruta;
      
      
   } else {
      
      texto.text = "Error!!";
   }
}


cargador_lv.load(rutas + archivos[i]);
}


ojala me puedan orientar, gracias :)

Por ipalmeros

45 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Sep 2009 07:59 pm
Dado que la carga es asíncrona, el loop no da tiempo a que se cargue cada archivo, y sobreescribe todos para ejecutar solo el último. Espera a que se dispare el onLoad para encadenar la siguiente carga.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Oct 2009 03:08 pm
Gracias jorge como siempre mi salvador :), disculpa mi ignorancia pero como logro que se cargue el onload, permitiendo a que de tiempo a ejecutar la siguiente carga?, gracias de nuevo

Por ipalmeros

45 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Oct 2009 03:13 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Oct 2009 09:07 pm
hola muchas gracias por el ejemplo jorge, solo una duda, ya me aparecen bien los mc, pero no mecarga el contenido, solo me carga las variables que hay dentro de cada txt en un campo te texto, pero no me carga los campos de texto que estan dentro de los movieclips



este es el codigo que modifique ahora con tu ayuda:

Código ActionScript :

mi_mc._visible=0

var rutas:String = mdm.Application.path+"accesos/internet/";
var archivos:Array = mdm.FileSystem.getFileList(rutas, "*.txt");

cantidad = archivos.length


import com.flashdb.provider
myData = new provider();
function handleData(res) {
   results_txt.text += res.ruta+"\n";
   if (res.ruta.substr(res.ruta.length-2) == "30"){}
}
function callData() {
   
   results_txt.text="";
   for (i=0; i<cantidad; i++) {
      
      _root.mi_mc.duplicateMovieClip("mc"+i,i)
   _root["mc"+i]._y = (mi_mc._height+5)*i + mi_mc._y;
   _root["mc"+i].textos.text = res.ruta;
   _root["mc"+i].boton.onRelease = function(){
      getURL(res.ruta)
   }
      
      myData.loadData(rutas + archivos[i], this, "handleData", {nr:i});
   }
}

   callData();


que estoy haciendo mal, ya lo he tratado de arreglar de muchas maneras pero el resultado es el mismo, muchas gracias

Por ipalmeros

45 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Oct 2009 10:07 pm
La info está accesible dentro del handleData, uno a uno en el orden en que lo has ido agregando, no en el loop de callData

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Oct 2009 09:41 pm
hola de nuevo jorge, creo que ya estoy en la fase final :) solo un apregunta mas, ya me pone el valor de la variable de los txt, pero solo me pone el valor del ultimo txt, aqui una imagen d elo que pasa



y este es el codigo como lo arregle

Código ActionScript :

mi_mc._visible=0

var rutas:String = mdm.Application.path+"accesos/internet/";
var archivos:Array = mdm.FileSystem.getFileList(rutas, "*.txt");

cantidad = archivos.length


import com.flashdb.provider
myData = new provider();
function handleData(res) {
   results_txt.text += res.ruta+"\n";
   
   for (i=0; i<cantidad; i++) {
   _root.mi_mc.duplicateMovieClip("mc"+i,i)
   _root["mc"+i]._y = (mi_mc._height+5)*i + mi_mc._y;
   _root["mc"+i].textos.text = res.ruta;
   _root["mc"+i].boton.onRelease = function(){
      getURL(res.ruta)
   }
}
   if (res.ruta.substr(res.ruta.length-2) == "30"){}
}


function callData() {
   
   results_txt.text="";
   for (i=0; i<cantidad; i++) {   
      myData.loadData(rutas + archivos[i], this, "handleData", {nr:i});
   }
}

   callData();



le he puesto res.ruta[i], pero me marca indefinido, como le hago para que tome cada boton el valor que corresponde a cada txt?, gracias por tu tiempo y ayuda

Por palmeros

46 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Oct 2009 02:29 pm
Ok, antes de lidiar con una estructura tan complicada (cargar n datos desde n archivos), considera usar la forma estandard, que es cargar n datos desde UN SOLO archivo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Oct 2009 10:11 pm
hola de nuevo, lo que pasa es que lo que pretendo con este programas es que el usuario agregue links de paginas y los guarde en un bloc de notas cada link, pq si trato de guardarlo en el mismo archivo me sustituiria la informacion guardada anteriormente, por eso trato de que cada link que guarde se guarde en un txt distinto, o que me aonsejarias hacer en este caso, estoy trabajando con zinc y flash

Por palmeros

46 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 03 Oct 2009 10:52 pm
Hace muuuuucho que no trabajo con Zinc, pero ¿no podía abrir un archivo en modo append? (es decir agregando al final)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Oct 2009 03:06 pm
listo jorge, lo hice como me lo sugeriste con append y jala bien, gracias :)

Por palmeros

46 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Oct 2009 07:01 pm
hola de nuevo, fijate que todo me jala bien, me crea los botones automaticamente, y me pone el nombre de cada linc que tengo, pero al meter mi variable que contiene los valores del array en una funcion (el boton) no me jala los correspondientes valores

Código ActionScript :

stop();
mi_mc._visible=0

var miLV:LoadVars = new LoadVars(); 
var miarray: Array = new Array();
miLV.load("links.txt");

miLV.onLoad = function (success:Boolean){
  if (success){
        for (i=1;(this["ruta"+i]!=undefined);i++){
            miarray= this["ruta"+i];

//aqui si me genera los botones, con los diferentes enlaces
         _root.mi_mc.duplicateMovieClip("mc"+i,i)
   _root["mc"+i]._y = (mi_mc._height+5)*i + mi_mc._y;

//al dar click aqui, solo me pone el valor del ultimo link agregado es decir me pone el mismo link en los tres
_root["mc"+i].onRelease = function(){
      trace(miarray)
   }

        }
 }
 else {
       trace("error en el archivo externo");
  }
}

Por palmeros

46 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 19 Oct 2009 07:16 pm
Cambialo así:

Código ActionScript :

  var target:MovieClip =_root.mi_mc.duplicateMovieClip("mc"+i,i) 
   target._y = (mi_mc._height+5)*i + mi_mc._y; 
   target.miarray= miarray
//al dar click aqui, solo me pone el valor del ultimo link agregado es decir me pone el mismo link en los tres 
 target.onRelease = function(){ 
      trace(this.miarray) 
   }


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 19 Oct 2009 08:13 pm
perfecto ya todo jala bien :) muchas gracias por tu ayuda :) y tu tiempo

Por palmeros

46 de clabLevel



Genero:Masculino  

firefox

 

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