Comunidad de diseño web y desarrollo en internet online

Ayuda con pequeño script (LoadVars)

Citar            
MensajeEscrito el 01 Sep 2007 11:59 pm
Necesito ayuda con esto, me explico:

Este script lo que deberia hacer (casi lo hace pero no -.-) es primero cargar una varibale desde un txt de la misma carpeta del swf, luego a una variable (totalImages) se le cambia el valor por:

• Si la carga fue exitosa se cambia el valor por el de la variable del txt (se llama total la variable)
• Si no se pudo cargar el valor de totalImages cambia por 21.

De hay deberia rellear numeros dentro de un array del 1 al totalImage, procesar numeros rand y despes cargar unas imagensillas. Esto funciona, lo que no funciona es la carga, cuando ejecuto simplemente me ignora la carga o yo ago algo mal, como totalImages esta declarada en 0, a la hora de remplazarle el valor no pasa nada, simplemente queda en 0 :SSS y por consecuente no carga las imagenes :S.


Código :

import mx.controls.Loader;
import mx.containers.Accordion;

var cargador:LoadVars = new LoadVars();
var totalImages:Number;
var holders:Number = 21;
var numOriginales:Array = new Array();
var numAleatorios:Array = new Array();
var tmpNum:Number;



//Esto es lo quye no funciona \/


cargador.onLoad = function(ok) {
   if (ok) {
      totalImages = this.total;

   } else {
      totalImages = 21;

   }
};


cargador.load("imagelist.txt");



//  /\




for (var i:Number = totalImages-1; i>=0; i--) {
   numOriginales.push(i);
}
for (var i:Number = 0; i<holders; i++) {
   tmpNum = Math.floor(Math.random()*numOriginales.length);
   numAleatorios.push(numOriginales[tmpNum]);
   numOriginales.splice(tmpNum,1);
}
for (var i:Number = 0; i<holders; i++) {
   slideShow_mc.slides_mc["holder"+i].loadMovie("images/image"+numAleatorios[i]+".jpg",slideShow_mc.slides_mc.getNextHighestDepth());
}

Por johnes

17 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Sep 2007 12:32 am
Cambia:

Código :

for (var i:Number = 0; i<holders; i++) { 
slideShow_mc.slides_mc["holder"+i].loadMovie("images/image"+numAleatorios[i]+".jpg",slideShow_mc.slides_mc.getNextHighestDepth());
}


por:

Código :

for (var i:Number = 0; i<holders; i++) { 
slideShow_mc.slides_mc["holder"+i].loadMovie("images/image"+numAleatorios[i]+".jpg",slideShow_mc.slides_mc["holder"+i].getNextHighestDepth());
}


...a ver qué tal te va.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 12:41 am
Mmmm, no funciono, me falto decir que todo va bien y funciona si le quito el loadVars, osea si pongo un valor sin tenerlo que cargar, todo funciona y se muestra, pero el problema es que no quiere cargar el txt, sale un mensaje "el script puede causar que su pc deje de responder..."

Y no c que pueda ser... por mas que veo el codigo...
Gracias de todas formas ^^ :wink:

PD: En el txt dice

total=50

nada mas :Pm, tambien puede ser por eso?

Por johnes

17 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Sep 2007 12:45 am
Si te dice eso es porque está cargando el archivo, pero no encuentra la variable y por tanto la declara "undefined" (por eso hace un loop infinito en el for). ¿Que tienes escrito en el archivo de texto?

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 12:51 am
total=50

Por johnes

17 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Sep 2007 01:04 am
Ok, prueba cambiando el "this.total" por "cargador.total"

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 02 Sep 2007 01:12 am
Nop sige igual,... que cosas internas pueden afectar la carga de varibles?
Uhm seguire probando y gracias por ayudar ^^.

Por johnes

17 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Sep 2007 01:41 am
Revisa el archivo de texto, creo que el problema tiene que estar ahí (chequea bien uso de mayúsculas, que no tenga espacios entre, etc.) Yo acabo de hacer una prueba y a mí sí me funciona el loadVars perfecto.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 03 Sep 2007 12:27 am
Ya pobre todo, no se que mas hacer :S
Aver si un ultimo intenta alguien me saca del ollo:
PD: Aki el fla, espero alguien ayude.
http://rapidshare.com/files/53002076/bertw2.fla.html


Código :

import mx.controls.Loader;
import mx.containers.Accordion;

var holders:Number = 21;
var numOriginales:Array = new Array();
var numAleatorios:Array = new Array();
var tmpNum:Number;
var loaderLV:LoadVars = new LoadVars();
loaderLV.load("variables.txt");

loaderLV.onLoad = function(success:Boolean) {
   if (success) {
      var totalImages:Number = Number(this.imagenes);

   } else {
      var totalImages:Number = holders;

   }
};

for (var k:Number = totalImages-1; k>=0; k--) {
   numOriginales.push(k);
}

for (var i:Number = 0; i<holders; i++) {
   tmpNum = Math.floor(Math.random()*numOriginales.length);
   numAleatorios.push(numOriginales[tmpNum]);
   numOriginales.splice(tmpNum,1);
}
for (var t:Number = 0; t<holders; t++) {
   slideShow_mc.slides_mc["holder"+t].loadMovie("images/image"+numAleatorios[t]+".jpg",slideShow_mc.slides_mc.getNextHighestDepth());
}
slideShow_mc.slides_mc["primera"].loadMovie(("images/image"+numAleatorios[0]+".jpg"),slideShow_mc.slides_mc.getNextHighestDepth());
slideShow_mc.slides_mc["tercera"].loadMovie(("images/image"+numAleatorios[2]+".jpg"),slideShow_mc.slides_mc.getNextHighestDepth());
slideShow_mc.slides_mc["segunda"].loadMovie(("images/image"+numAleatorios[1]+".jpg"),slideShow_mc.slides_mc.getNextHighestDepth());
slideShow_mc.slides_mc["cuarta"].loadMovie(("images/image"+numAleatorios[3]+".jpg"),slideShow_mc.slides_mc.getNextHighestDepth());
slideShow_mc.slides_mc["ultima"].loadMovie(("images/image"+numAleatorios[totalImages-1]+".jpg"),slideShow_mc.slides_mc.getNextHighestDepth());

Por johnes

17 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Sep 2007 04:25 am
Ok, el problema es de estructura, verás.
Tú lo que quieres es que primero se ejecute el loadVars() y luego se ejecute el resto del código. Sin embargo, colocas el código que debe ejecutarse luego al mismo nivel del loadVars, por lo que cuando se ejecutan los for aún el loadVars no se ha cargado. Para solucionarlo lo que tienes que hacer es colocar todo ese código (el for y todo lo que sigue) dentro de una función, y llamarla cuando se ejecute el evento onLoad del LoadVars. Además, si la variable "totalImages" es común para todo el código, lo lógico es que la declares una sola vez al inicio. Algo así:

Código :

[...] //Tus imports y tus variables...
var totalImages:Number = 0; //la variable totalImages.

loaderLV.onLoad = function(success:Boolean) {
   if (success) {
     totalImages = this.imagenes; //el "Number" no es necesario porque Flash hace el Cast automáticamente
   } else {
      totalImage = holders;

   }
   iniciar(); //La función que tiene las operaciones que quieres hacer
};
function iniciar():Void{
//Aquí va el resto del código, excepto la llamada al LoadVars...
}

loaderLV.load("variables.txt);


Eso debe solucionar tu problema.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 03 Sep 2007 11:23 pm
Gracias, de verdad te lo agradesco ^^
Y gracias tambien por las aclaraciones, espero alguna ves poder regresarte el favor.
Duda resuelta.

Por johnes

17 de clabLevel



 

msie7

 

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