Comunidad de diseño web y desarrollo en internet online

setInterval + slide + link

Citar            
MensajeEscrito el 29 Jul 2008 02:32 pm
Hola nuevamente, la misma duda que antes pero a medio resolver:

Tengo 4 banners que miden 602px de ancho metidos todos en un MC instanseado "banner" y que hacen link a una página interna.
Los mismo deben moverse cada x segundos hacia la izquierda, para esto tengo el siguiente código:

Código :

setInterval(moveBanner, 2000);
function moveBanner():Void
{
   _root.banner.posX = Stage.width;
}

_root.banner.onEnterFrame = function():Void
{
   var difX:Number = (this.posX - this._x)*.25;
   this._x -= difX;
}


Mi pregunta en este punto se divide en dos: por un lado, ¿cómo hago para que se mueva 602px exacto (esta función mueve todo, y la cambié de varias maneras pero por lo visto no la correcta); por otro lado, cómo hago para que vuelva al primer banner?

Luego, en el MC tengo el siguiente código para cuando haga clic en uno de los 4 botones que tengo en la escena mueva el banner a su posicón:

Código :

onClipEvent(load)
{
   x=0;
   _x=0;
}
onClipEvent(enterFrame)
{
   _x+=(x-_x)*0.3;
}


Y para cada botón tengo en el 1er frame del _root el siguiente código:

Código :

btn01.onRelease = function() 
{
   mcbanners.x=0;
}


Lo que no sé: ¿cómo hago esta función para que funcione desde el frame del _root?

Y supongo que para que todo funcione en armonía debería poner alguna otra función que reconozca que al hacer clic en un ode los botones toma esa coordenada y el setInterval se ponga en cero: esto realmente no lo sé... cómo hag todo esto?

Muchas gracias y disculpen el quilombete.
Abrazos miles... Emiliano

Por boratlon

Claber

139 de clabLevel



 

msie7
Citar            
MensajeEscrito el 11 Ago 2008 02:03 am
por favooooooooooooooooooooooor... ayuda con estooooo... ya di dos mil vueltas y no le encuentro la soluciooon... porfa... gracias... abrazos

Por boratlon

Claber

139 de clabLevel



 

msie7
Citar            
MensajeEscrito el 11 Ago 2008 07:05 pm
La primera parte la entendí, el banner se te va completo porque en vez de restar la diferencia entre los dos puntos debes sumarla y además la variable posX la debes ir incrementando o decreciendo, no dejarla fija en un solo valor:

Código :

var porTiempo:Number = setInterval(moveBanner, 2000);

function moveBanner():Void{
   
   _root.banner.posX -= Stage.width;
   
}

_root.banner.onEnterFrame = function():Void{
   
   var difX:Number = (this.posX - this._x)*.25;
   this._x += difX;
   
}


Si el banner tiene el ancho de la pantalla deja el código con Stage.width, sino, entonces remplázalo por tu número 602.

Ahora explica mejor la segunda parte porque no te entiendo muy bien loque quieres lograr.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 11 Ago 2008 07:27 pm
Hola elchininet... cómo va? gracias por la respuesta.

La segunda parte, a lo que me refiero, es que no sólo los banners se mueven sólos cada x segundos, sino que además hay la misma cantidad de botones que de banners que al hacerles clic posiciona el banner correspondiente en pantalla (ubicación en el eje x) moviendolo.

Por lo que tendría que volver el contador a 0, guardar la nueva posición en x y posicionar el banner dependiendo al botón que cliqueo.

Espero se entienda.
Abrazos y gracis de nuevo

Por boratlon

Claber

139 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Ago 2008 08:13 pm
Primero que todo, al final de todos tus banners sitúa uno igual que el primero, para que no se vea el salto de uno a otro, ahora supongamos que los botones en tu escena se llaman "boton1", "boton2", "boton3", etc hasta la cantidad de banners y que tu MC se llama banner, debría quedarte algo como esto:

Código :

//---Declarar variables
_root.banner.posX = _root.banner._x;
_root.banner.xIni = _root.banner._x;

//---Esta es la cantidad de banners sin contar el último banner que será el mismo que el primero
var cantidad:Number = 4;

//---Este es el ancho de tus banners, en este momento es el mismo ancho que la escena
var ancho:Number = Stage.width;

//---Mover por tiempo

var porTiempo:Number;

porTiempo = setInterval(moveBanner, 3000);

function moveBanner():Void {

   _root.banner.posX -= Stage.width;

}

_root.banner.onEnterFrame = function():Void  {

   var difX:Number = (this.posX-this._x)*.25;
   this._x += difX;
   
   if(this.backup == this._x){
      
      //---Si el banner llega a esta posición volver a poner el primer banner
      if(this.posX < this.xIni - ancho * (cantidad - 1)){
         
         this._x = this.xIni;
         this.posX = this.xIni;
         
      }
      
   }else{
      
      this.backup = this._x;
      
   }

};

//---Acciones de los botones

for(var i:Number = 1; i <= cantidad; i++){
   //---Guardar una variable numero en los botones
   this["boton" + i].numero = i;
   
   this["boton" + i].onPress = function():Void{
      //---Eliminar el interval y volverlo a crear
      clearInterval(porTiempo);
      
      porTiempo = setInterval(moveBanner, 3000);
      //---Ir a la posición del banner depende del botón presionado
      _root.banner.posX = _root.banner.xIni - ancho * (this.numero - 1);
      
   }
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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