Comunidad de diseño web y desarrollo en internet online

Pausa dentro de un for...

Citar            
MensajeEscrito el 15 May 2006 03:11 pm
Hola! Veran, tengo una peli, en la que quiero mostrar una fotos, pero que se vayan pasando de forma automática. Esto creo que se puede hacer con un bucle for, pero claro, necesito que se haga una pausa netre foto y foto. Es decir, tengo algo asi:

Código :

for(i=x;i<=xmax;i++){
        _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+x+".swf"); 
         
      }


Donde "x" es el nombre de la foto actual. Como lo haría??? Muchisimas gracias desde ya.
Saludos.

[MhX] Cuando postees código, usa las etiquetas [code] [/MhX]

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 May 2006 03:24 pm
En tal caso NO se hace con un for. El for, es para cosas que ocurren en el mismo "instante". Crea una función en la que cargues las fotos y ejecútala con setInterval, que eso es lo que buscas.

Código :

var i=0;
function cargarFotos(x){
_root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+x+".swf");
i++;
}
intervalo=setInterval(cargarFotos,2000/*tiempo en milisegundos*/,i)

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 15 May 2006 03:59 pm
Hola zah! Muchas gracias por tu ayuda. He probado tu código y no me funciona..Esto es lo que tengo:

Código :

on(release){

      var i=x;
         function cargarFotos(i){
          _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+i+".swf");
          i++;
      }
        intervalo=setInterval(cargarFotos,2000/*tiempo en milisegundos*/,i)
   }

Que estoy haciendo mal? Muchas gracias desde ya.

[MhX] Cuando postees código, usa las etiquetas [code] [/MhX]

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 May 2006 04:30 pm
Ojo la variable i es numerica... (veo una "x" ahi por eso lo digo)...

Por otro lado te recomiendo que por buenas practicas en AS programes asi:

Código :

var i=0;
function cargarFotos(nombre){
    _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+nombre+i+".swf");
     i++;
}

btnMiBoton.onRelease = function(){
   var nIntervalo = setInterval(cargaFotos, 2000, "photo");
}


[MhX] Cuando postees código, usa las etiquetas [code] [/MhX]

Por eporroa

664 de clabLevel



Genero:Masculino  

Lima - Peru

firefox
Citar            
MensajeEscrito el 15 May 2006 09:38 pm
Hola amigos! Antes de nada, muchas gracias por vuestra atención. El caso es que no me termino de enterar...En un frame tengo esta función:

Código :

function cargarFotos(i){
   
if(i<xmax ){  //Mientras no se llegue a la xmax, mostra i y aumentar en 1
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+i+".swf");
   i++;
}
if(i=xmax){
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+xmax+".swf");
   i=1;
}


}


Y en el boton esto:

Código :

on(release){
          var i=x;
     intervalo=setInterval(cargarFotos,2000,i);
   //Valores de los txt dinamicos
            desFoto=comentario[i];
            nFotos="Imagen "+i+" de "+xmax;
}

Bien, pues cuando pulso, aparece la última foto, una y otra vez...Que tengo que corregir? Muchas gracias desde ya.

P.D.: La variable x es numerica.

[MhX] Cuando postees código, usa las etiquetas [code] [/MhX]

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 May 2006 11:20 pm
Pues por ejemplo, debes correjir el simple hecho de que la variable i es de ambito local a tu onRelease, por lo tanto siempre le pasas el mísmo valor a la función de carga con SetInterval, dado que la funcion de carga No puede incremetar tu i dado que NO es visible para ella, por lo tanto si haces un trace en esa función de carga a la i, veras que obtienes un bonito undefined :P

Saca la i fuera, de modo que sea accesible por todos..

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

clabbrowser
Citar            
MensajeEscrito el 16 May 2006 07:42 am
Muy buenas! Muchas gracias por vuestra respuesta, pero sacando la i fuera del on(release), tampoco funciona, sigue igual. Esto tengo en el realese:

Código :

on(release){

intervalo=setInterval(cargarFotos,2000,x);
         
         //Valores de los txt dinamicos
            desFoto=comentario[x];
            nFotos="Imagen "+x+" de "+xmax;
}

Y la función cargar fotos es:

Código :

function cargarFotos(i){
   var i;
if(i<xmax ){
   
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+i+".swf");
   i++;

}
if(i=xmax){
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+xmax+".swf");
   i=1;
}


}

Pero no funciona :-( ¿Que puedo hacer? Gracias por adelantado.

[MorphX]Te he dicho antes que cuando postess CÓDIGO, USES LAS ETIQUETAS [code] [/MorphX] :|

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2006 12:21 pm
Te muestra la ultima foto siempre porque tienes puesto:

Código :

 
if ( i=xmax ){
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+xmax+".swf");
   i=1;
}

en lugar de:
if ( i == xmax )


Por otra parte en la funcion cargarFotos (la ultima que has publicado) veo que has puesto:

var i;
if (i<xmax)

evidentemente i será undefined porque la estás declarando pero no la inicializas, además, al poner var i; estás declarando la variable como local a la función, cuando lo que necesitas es que i sea una variable de la línea de tiempo(global para que nos entendamos). La forma de correcta de hacerlo sería como dice Xroa, en el primer frame (o en el que quieras después de crear el boton) declaras:

Código :

var i=1;
function cargarFoto()
{
  if (i<xmax ){  //Mientras no se llegue a la xmax, mostra i y aumentar en 1
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+i+".swf");
   i++;
   }

if (i == xmax)
  {
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+xmax+".swf");
   i=1;
   }
}

nombreInstanciaBoton.onRelease = function() {
 setInterval (cargarFoto,2000);
}


Un par de cosas, lo de nombreInstanciaBoton.onRelease equivale a poner on(Release) { } dentro del boton.
Lo segundo es que como habrás visto no le pasó ningún parámetro a la funcion cargarFoto, esto es por dos razones:
1. Porque no es necesario ya que la variable que utilizas es la "i", que ya es accesible dentro de la funcion y no hace falta que se la pases.
2. No es correcto que lo siguiente: cargarFoto(x){ _root.loadMovie(x + ".jpg"); i++; } y luego llames a setInterval(cargarFoto, duracion, i);
Esto no es válido porque aunque estés actualizando la i dentro de la funcion cargarFoto, cuando utilizas setInterval se le pasa siempre a la funcion el mismo valor, en este caso, si la i vale uno cuando llamas a setInterval estaras llamando siempre cargarFoto(1); por eso lo correcto es que para cargar la pelicula utilices la variable i, que es la variable que se actualiza: _root.loadMovie(i+".jpg"); en lugar de la "x" que recibe como parametro.

Bueno espero que te sirva de ayuda todo este royo. Suerte, y contesta si consigues resolverlo o si te surge alguna otra duda

Por adriesp

113 de clabLevel

1 tutorial

Genero:Masculino  

Salamanca

opera
Citar            
MensajeEscrito el 16 May 2006 01:53 pm
Hola! Muchas gracias por tu ayuda, pero sigue sin funcionar...Este es el codigo, en el frame 1 (aunque la peli sólo tiene un frame por capa):

Código :

 
var i=x;
function cargarFoto()
{
  if (i<xmax ){  //Mientras no se llegue a la xmax, mostrar i y aumentar en 1
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+i+".swf");
   i++;
   }

if (i == xmax)
  {
   _root.ins_fotos.loadMovie("\\galeria"+numG+"\\"+i+".swf");
   i=1;
   }
}

modoFotos_btn.onRelease = function() {
 setInterval (cargarFoto,2000);

}




La variable "x" es numérica, y marca el número de la foto que se está mostrando. Sigue (casi) igual: Al pulsar el boton, muestra la primera y la última foto una y otra vez...Muchisimas gracias por vuestra ayuda y paciencia.
Saludos.

[MorphX]Editado para mejor entendimiento[/MorphX]
Las etiquetas son [code] [/ code] <-- sin espacio entre / y code , MorphX soy yo ¬¬

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2006 02:06 pm
Un detalle: He introducido una foto más (ahora son 4 en vez de 3), y al pulsar el boton, empieza a pasar, pero no muestra la 3, se salta a la 4...Y además, el psae no empieza en la foto "x" sino en la 1. Por que creeis que ocurre esto??
Mil gracias de nuevo.

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2006 02:25 pm
Perdón, pero ya se ha resuleto el problemilla, y ha salido otro: Ahora empieza con el pase desde la foto "x" y llega hasta la última (he cambiado de sitio el "i++;" lo he puesto antes de cargar la foto). Lo que ocurre ahora es que cuando llega a la última, la siguiente no es la primera, sino, la segunda...A que se debe? Gracias de nuevo.

P.D.: Como para este proceso?? Es decir, si tengo otro botón, cómo hago para que no siga la función "cargarfotos()"??

Por Prometeo2006

122 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 May 2006 02:46 pm
Usa clearInterval, pero para ello, en otra variable de visibilidad global debes guardar el interval usado para llamar a la función

Código :

var intervalo:Number;

//...

modoFotos_btn.onRelease = function() {
 intervalo = setInterval (cargarFoto,2000);
}

pararFotos_btn.onRelease = function(){
  clearInterval(intervalo);
}




Salu2...

Por MorphX

SWAT Team

982 de clabLevel

3 tutoriales

  SWAT

La Telaraña Digital

clabbrowser
Citar            
MensajeEscrito el 16 May 2006 04:23 pm
Si ese es el codigo que tienes en el primer frame, y tu pelicula solo tiene un frame, ¿dónde das valor a la variable x?, no estoy muy seguro pero creo que el problema te viene de ahí ya que el resto del código es correcto. Además me parece que se te salta de la última foto a la segunda porque cuando llega la última foto haces i=1, pero al cargar la primera, si tienes puesto el i++ antes de cargarla tendrás i=2 y por eso se salta una.
Me da que el error te puede venir de la x, de dónde la inicialices y donde la actualices.

Por adriesp

113 de clabLevel

1 tutorial

Genero:Masculino  

Salamanca

opera
Citar            
MensajeEscrito el 16 May 2006 07:48 pm
Hola amigos! Ya está todo resuelto, gracias a vuestra ayuda y paciencia. Increíble lo que se aprende en este for...
Pues lo dicho, muchas gracias atodos por vuestra ayuda y paciencia.
Saludos.

Por Prometeo2006

122 de clabLevel



 

firefox

 

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