Comunidad de diseño web y desarrollo en internet online

Ayuda con setInterval

Citar            
MensajeEscrito el 18 Oct 2005 12:18 am
Hola a todos, estoy haciendo un swf donde muestro los datos de un producto... Cada X tiempo necesito que cambie a otro producto. Los datos los saco de una base de datos por intermedio de PHP y LoadVars.
Hace tres días que estoy con esto y no he logrado hacerlo.
Con setInterval he logrado hacer algo, pero no me muestra el primer producto.
Este es el código:

Código :

var ofer:LoadVars = new LoadVars();
ofer.load("oferta.php");

var intervalId:Number;
var count:Number = 0;
var duration:Number = 2000;
var colors:Array = new Array();
ofer.onLoad = function (){
   _global.maxCount = this.cant-1;
   var i;
   for (i=0; i<this.cant; i++) {
      colors.push(this["nombre" + i]);
   }
}

function executeCallback(param:String) {
 trace("executeCallback intervalId: " + intervalId + " count: " + count + " param: " + param);
 clearInterval(intervalId);
 if(count < maxCount) {
 count++;
 intervalId = setInterval(this, "executeCallback", duration, colors[count]);
 }
}

if(intervalId != null) {
 clearInterval(intervalId);
}

intervalId = setInterval(this, "executeCallback", duration, colors[count]);


Además con este código no se como hacer que vuelva al inicio otra vez, o sea que muestra los 3 o 4 productos que hay en la base (sin mostrar el primero, que me dice "undefined") y se para. Necesito que vuelva al principio y repita lo mismo.

A las personas generosas que me puedan ayudar les estaré eternamente agradecido.

chau.

Por Zerjio

6 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 18 Oct 2005 12:25 am
pue ssi entendi bien
solo ejecuta la funcion sola y despues manda a llamar al setinterval

Saludos ^^

Por FeNtO

BOFH

5091 de clabLevel

18 tutoriales

1 ejemplo

  Bastard Operators From Hell

FeNtO DataCenter

clabbrowser
Citar            
MensajeEscrito el 18 Oct 2005 09:55 am
Lo que hace el código que puse anteriormente es lo siguiente:

Si tenemos en la base de datos 4 artículos (artículo1, artículo2, artículo3, artículo4) por ejemplo el resultado es:

undefined
artículo2
artículo3
artículo4

y se para....

lo que quiero que haga es:

artículo1
artículo2
artículo3
artículo4
artículo1
artículo2
........... etc.

Se entiende ahora?

Saludos y gracias

Por Zerjio

6 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 18 Oct 2005 10:14 am
Carga el recordset completo en un Array (weno recordset no pq no estas usando AMF) carga pues los datos recibidos al inicio en un Array, y con setInterval, pues lee ciclicamente las posiciones del array ...

Suerte...

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 18 Oct 2005 10:27 am
Justamente es lo que hago.... los datos los cargo en un array:

Código :

var colors:Array = newArray();
for (i=0; i<this.cant; i++) { 
      colors.push(this["nombre" + i]); 
   }


Pero no me da resultado.

Gracias[/code]

Por Zerjio

6 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 18 Oct 2005 10:46 am

Código :

var colors:Array = new Array();

function executeCallback(param:String) 
{
 clearInterval(intervalId);

  if(count < maxCount) 
  {
     count++;
     intervalId = setInterval(this, "executeCallback", duration, colors[count]);
  }
}



Fijate, deja de ejecutarse una vez el contador llega al máximo de cuenta cierto?, pues pon un else y reinicia el contador así

Código :

  if(count < maxCount) 
  {
     count++;
     intervalId = setInterval(this, "executeCallback", duration, colors[count]);
  }
   else
     count = 0; //Valor inicial de cuenta 0 o el que sea

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 18 Oct 2005 10:49 am
ok, voy a probar esta tarde cuando llegue a casa y te aviso si funcionó.
Otra cosa.... sabes porqué no me identifica la primera posición del array?

Saludos y MUCHAS GRACIAS!

Por Zerjio

6 de clabLevel



Genero:Masculino  

safari
Citar            
MensajeEscrito el 18 Oct 2005 11:23 am
Eso es pq setInterval se ejecuta antes de que termines de cargar los datos, y ya a partir de la segunda ejecucion si ves los datos, ya veras ahora que se cicla, como Si te muestra el articulo 1, para solventar esto, condiciona el inicio de intervalos al fin de la carga de datos totales.

Saludos..

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

firefox
Citar            
MensajeEscrito el 18 Oct 2005 08:31 pm
Gracias a la ayuda de MorphX y Maikel pude lograr hacer lo que quería.
Por si le sirve a otra persona le paso el script de como cargar una caja de texto con datos de una base en PHP cada X tiempo...

Código :

stop();
//cargo los datos de la base
var ofer:LoadVars = new LoadVars();
ofer.load("oferta.php");
//declaro las variables y le asigno los valores
var intervalId:Number;
var count:Number = 0;
var duration:Number = 2000;
//declaro un nuevo array
var titulo:Array = new Array();
ofer.onLoad = function() {
   //"this.cant" es una variable del PHP que me dice cuantos cargo
   _global.maxCount = this.cant-1;
   //cargo el array con los datos de la base
   var i;
   for (i=0; i<this.cant; i++) {
      titulo.push(this["nombre"+i]);
   }
};
setInterval(cargar=function () {
   //si "count" es menor o igual a la cantidad de datos que tiene el array
   if (count<=maxCount) {
      trace(titulo[count]);
   //me pone el primer elemento del array en una caja de texto
      nombre.text = titulo[count];
   //y le suma 1 a "count"
      count++;
   //si no (si "count" es mayor a la cantidad de datos que tiene el array)
   //resetea "count" a 0 para que el setInterval vuelva a empezar
   } else {
      count = 0;
   }
   //cierro la función y le agrego la duración.
}, duration);


Espero haber sido lo más explicativo posible.
Gracias a los que me ayudaron y espero que esto ayude a alguien más.
Saludos

Por Zerjio

6 de clabLevel



Genero:Masculino  

safari

 

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