Comunidad de diseño web y desarrollo en internet online

Duda sobre carga aleatoria swf + variable txt

Citar            
MensajeEscrito el 19 Oct 2005 06:08 pm
Este es el código:

Código :

var totesOfertes:LoadVars = new LoadVars();
var cantidad:Number;
totesOfertes.onLoad = function(ok) {
   if (ok) {
      cantidad = totesOfertes.total;
   } else {
      cantidad = 1;
   }
};
totesOfertes.load("ofertestotals.txt");
function carga() {
   contenido_mc.unloadmovie();
   createEmptyMovieClip("contenido_mc", 1);
   var numero:Number = Math.floor(Math.random()*cantidad+1);
   trace("numero=" +numero);
   contenido_mc.loadMovie("oferta"+numero+".swf");
}
setInterval(carga, 5000);
carga();


Y el error es este:

numero=NaN
Error opening URL "file:///C|/wamp/sitiosLocal/fevi%2Dintersport/ofertaNaN.swf"
numero=1
numero=1

Lo cual quiere decir que la primera vez la variable numero no se le pasa, y da error, es decir, que le cuesta en este caso 1 proceso de intervalo para que funcione.

Alguna sugerencia para arreglar esto?

Gracias 8)

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 19 Oct 2005 06:14 pm
llama la funcion carga dentro del onLoad, porque cantidad no se define la primera vez por eso el NaN

saludos :)

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 Oct 2005 07:43 am

Código :

...
if (ok) {
    cantidad = totesOfertes.total;
    carga();
...


Y en el panel salida:

numero=1
...

Pues Buena vista! Funciona.

:lol:

Agradecido...

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 20 Oct 2005 11:43 am
He añadido otra variable y:

Código :

var totesOfertes:LoadVars = new LoadVars();
var cantidad:Number;
var periode:Number;
totesOfertes.onLoad = function(ok) {
   if (ok) {
      cantidad = totesOfertes.total;
      periode = totesOfertes.temps*1000;
      carga();
   } else {
      cantidad = 1;
   }
};
totesOfertes.load("ofertestotals.txt");
trace("periode antes funcion carga= "+periode);
function carga() {
   contenido_mc.unloadmovie();
   createEmptyMovieClip("contenido_mc", 1);
   var numero:Number = Math.floor(Math.random()*cantidad)+1;
   trace("numero= "+numero);
   trace("periode dins carga= "+periode);
   contenido_mc.loadMovie("oferta"+numero+".swf");
}
trace("periode antes interval= "+periode);
setInterval(carga, periode);



Y en salida:

periode antes funcion carga= undefined
periode antes interval= undefined
numero= 2
periode dentro funcion carga= 5000
...

es decir, que no funciona dentro de setInterval, aunque carga perfectamente la variable dentro de la función carga()

así que si pongo el número dentro de setInterval por ejemplo 5000 funciona a la perfección.

Cómo pasarle la variable periode a setInterval. He probado poner la variable dentro de la función carga, pero me hace un bucle tal como está montado.

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox
Citar            
MensajeEscrito el 20 Oct 2005 12:12 pm
Sisco cualquier llamada que vayas hacer a carga debe ser despues que se cargue o no , y tu sabes eso es cuando se ejecuta el onLoad, aunque el txt sea muy pequeño y se cargue rapido, la funciona carga se ejecuta primero (por el setInterval) SIN definir las variables que dependen de la ejecucion del onLoad, que esta vez son dos cantidad y totesOfertes.temp,

prueba este codigo:

Código :

var totesOfertes:LoadVars = new LoadVars();
var cantidad:Number;
var periode:Number;
totesOfertes.onLoad = function(ok) {
   if (ok) {
      cantidad = totesOfertes.total;
     periode = this.temps;
   } else {
      cantidad = 1;
     periode = 1000;
   }
   intervalo = setInterval(carga, periode);
   carga();
};
totesOfertes.load("ofertestotals.txt");
//trace("periode antes funcion carga= "+periode);
function carga() {
   contenido_mc.unloadmovie();
   createEmptyMovieClip("contenido_mc", 1);
   var numero:Number = Math.floor(Math.random()*cantidad)+1;
   trace("numero= "+numero);
   trace("periode dins carga= "+periode);
   contenido_mc.loadMovie("oferta"+numero+".swf");
}
//trace("periode antes interval= "+periode);
//intervalo = setInterval(carga, periode);


Por cierto dentro del evento onLoad refierete al objeto con this y no con su nombre, te evitará dolores de cabeza.

saludos.

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 20 Oct 2005 02:13 pm
Bueno, pues queda claro y solucionado. Gracias por tu apoyo. Nos leemos! ^^

Por Sisco

BOFH

3700 de clabLevel

12 tutoriales
4 articulos

Genero:Masculino   Bastard Operators From Hell

Catalunya

firefox

 

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