Comunidad de diseño web y desarrollo en internet online

Scroll_Jodón

Citar            
MensajeEscrito el 18 Ene 2007 10:04 am
wenas a todoss

El problema que tengo viene de un menú con efecto scroll.

Dejo aqui el link para que lo enténdais mejor:

http://www.grupopk.com/scroll/scroll.html


El .fla tiene dos fotogramas, en cada uno con código,... :

Fotograma_1:

Código :


//Declaramos variables
// Variable para saber la posición _x del mouse
var yposMouse:Number = _root._ymouse;
// Variable para asignar la velocidad máxima del movimiento de los MC
var velMax:Number = 5;
// Velocidad mínima de los MC
var velMin:Number = 0;
// Variable para asignar el punto medio de la escena
var yMitadEscena:Number = 400 ;
// La siguiente var, sirve para determinar cuando el mc está al
//límite _x de la pantalla, en este caso es de 600 pixels
var anchoEscena:Number = 520;
// A esta le asignaremos el ancho del mc, para saber cuando a desaparecido del
// todo de la escena y establecer las separaciones entre mcs
var anchoMC:Number = 35;
//variable factor, que en realidad es la función matemática
// f(x) = ax + b
var factor:Number = yposMouse*(velMax-velMin)/yMitadEscena+2*velMin-velMax;
//No queremos que factor pase de 6, o de  -6
if (factor>velMax) {
   factor = velMax;
} else if (factor<-velMax) {
   factor = -velMax;
}
//Si el mc se ha salido por la derecha, ponerlo
//en la izquierda o viceversa.
//1
if (a1_mc._y>anchoEscena) {
   this.a1_mc._y = -anchoMC;
}
if (a1_mc._y<-anchoMC) {
   this.a1_mc._y = anchoEscena;
}
//2
if (a2_mc._y>anchoEscena) {
   this.a2_mc._y = -anchoMC;   
}
if (a2_mc._y<-anchoMC) {
   this.a2_mc._y = anchoEscena;
}
//3
if (a3_mc._y>anchoEscena) {
   this.a3_mc._y = -anchoMC;
}
if (a3_mc._y<-anchoMC) {
   this.a3_mc._y = anchoEscena;
}
//4
if (a4_mc._y>anchoEscena) {
   this.a4_mc._y = -anchoMC;
}
if (a4_mc._y<-anchoMC) {
   this.a4_mc._y = anchoEscena;
}
//5
if (a5_mc._y>anchoEscena) {
   this.a5_mc._y = -anchoMC;
}
if (a5_mc._y<-anchoMC) {
   this.a5_mc._y = anchoEscena;
}
//6
if (a6_mc._y>anchoEscena) {
   this.a6_mc._y = -anchoMC;
}
if (a6_mc._y<-anchoMC) {
   this.a6_mc._y = anchoEscena;
}
//7
if (a7_mc._y>anchoEscena) {
   this.a7_mc._y = -anchoMC;
}
if (a7_mc._y<-anchoMC) {
   this.a7_mc._y = anchoEscena;
}
//espacio
if (espacio_mc._y>anchoEscena) {
   this.espacio_mc._y = -anchoMC;
}
if (espacio_mc._y<-anchoMC) {
   this.espacio_mc._y = anchoEscena;
}
// Y ahora Al ataqueeeee!!! pasamos al frame 2
play();




Fotograma_2

Código :

//Si la posición del mouse está más alla de la mitad derecha +30 pixels,
//mover hacia la izquierda (a la velocidad del factor)
if (yposMouse>(yMitadEscena)+30) {
   this.a1_mc._y -= factor;
   this.a2_mc._y -= factor;
   this.a3_mc._y -= factor;
   this.a4_mc._y -= factor;
   this.a5_mc._y -= factor;
   this.a6_mc._y -= factor;
   this.a7_mc._y -= factor;
   this.espacio_mc._y -= factor;
}
//Si lo está a menos de 30 pixels de la mitad izquierda,
//mover a la derecha (a la velocidad del factor)
if (yposMouse<(yMitadEscena)-30) {
   this.a1_mc._y -= factor;
   this.a2_mc._y -= factor;
   this.a3_mc._y -= factor;
   this.a4_mc._y -= factor;
   this.a5_mc._y -= factor;
   this.a6_mc._y -= factor;
   this.a7_mc._y -= factor;
   this.espacio_mc._y -= factor;
}
/*
Debido a que el número factor es incremental, se debe
proceder a una corrección de la posición de los mc, de
forma que la posiciones de los mc dependan unas de otras
*/
//Corrección del 1
if (this.espacio_mc._y<anchoEscena-anchoMC) {
   this.a1_mc._y = this.espacio_mc._y+anchoMC;
}
//corrección del 2
if (this.a1_mc._y<anchoEscena-anchoMC) {
   this.a2_mc._y = this.a1_mc._y+anchoMC;
}
//corrección del 3
if (this.a2_mc._y<anchoEscena-anchoMC) {
   this.a3_mc._y = this.a2_mc._y+anchoMC;
}
//corrección del 4
if (this.a3_mc._y<anchoEscena-anchoMC) {
   this.a4_mc._y = this.a3_mc._y+anchoMC;
}
//corrección del 5
if (this.a4_mc._y<anchoEscena-anchoMC) {
   this.a5_mc._y = this.a4_mc._y+anchoMC;
}
//corrección del 6
if (this.a5_mc._y<anchoEscena-anchoMC) {
   this.a6_mc._y = this.a5_mc._y+anchoMC;
}
//corrección del 7
if (this.a6_mc._y<anchoEscena-anchoMC) {
   this.a7_mc._y = this.a6_mc._y+anchoMC;
}
//corrección del espacio
if (this.a7_mc._y<anchoEscena-anchoMC) {
   this.espacio_mc._y = this.a7_mc._y+anchoMC;
}

// Vamonoooooos !!!
gotoAndPlay(1);



He revisado todos los nombres, _mc's

(...?)




Gracias...

~koballo~

Por koballo

708 de clabLevel



 

safari
Citar            
MensajeEscrito el 18 Ene 2007 03:47 pm
No voy a revisar tu código para buscar el error, ya me sé la historia.... para quitar el "agujero" necesitarás duplicar los movieClips alguna vez..... es claro que existen momentos en que se tiene que ver un mismo MC dos veces, abajo y arriba y como no hay ningún duplicate en el código, es eso.

Te pongo un viejo script mio muy configurable. Es para imágenes pero puedes cambiar el attach de imágenes por los MC del menú facilmente.
También el enlace de otro scroll continuo que publique en FlashKit hace tiempo para MX con algunas opciones más y de donde puedes bajar el FLA: scroll continuo
Ese es horizontal pero cambiando x por y .... es vertical :)

Código :

/* SCROLL VERTICAL CONTINUO   Flash MX         by  TESEO 
No es necesario redimensionar las imagenes, se autoajustan. 
Montar cada imagen en un MC para attach y vincularlos como 
MC1 , MC2 , MC3  ......etc. 
Poner este codigo en el primer frame del escenario. 
Definir las variables de inicio según necesidad. 
*/ 
if (!iniciado){ 
Nmcs = 6 ; //numero de MC´s para scrolling (>1) 
espacio = 5; //espacio en pixels que se deja entre las fotos 
Xc = 200; //cordenada x de la caja del scroll 
Yc =50; //cordenada y de la caja del scroll 
alturamaxima = 600; // altura máxima del scroll 
anchuramaxima = 200;//para reescalar si hay fotos mas anchas 
velo = 2; // velocidad  base del scroll positiva o negativa 
createEmptyMovieClip ("imgMC",0); 
imgMC._x  = Xc; 
actual = imgMC._y  = Yc; 
anchomas = 0; 
altomas = 0; 
Nmcs *= 2; 
velobase = velo; 
for (k = 1 ; k <= Nmcs  ;k++) { 
   imgMC.attachMovie("MC"+(1+(k-1)%(Nmcs/2)) , "MC"+k , k); 
   mc0 = eval("imgMC"+".MC"+k) ; 
   mc0. _y = actual  +espacio; 
   if (mc0._width > anchuramaxima ){ 
     mc0._xscale =  anchuramaxima*100 / mc0._width ; 
     mc0._yscale = mc0._xscale; 
   } 
   mc0._width > anchomas ? anchomas = mc0._width : null; 
   mc0._height > altomas ? altomas = mc0._height : null; 
   actual = mc0._y + mc0._height; 
} 
alto = (actual  - Yc) / 2 + altomas; 
alto > alturamaxima ? altura = alturamaxima : altura = alto; 
imgMC.createEmptyMovieClip ("mascara", 2000); 
with (imgMC.mascara){ 
   beginFill (0x0000FF, 50); 
   moveTo (0 , altomas); 
   lineTo ( anchomas, altomas); 
   lineTo ( anchomas, altura); 
   lineTo (0, altura); 
   lineTo (0, altomas); 
   endFill(); 
} 
imgMC.setMask(imgMC.mascara); 
imgMC._y = Yc - altomas; 
iniciado = true; 
} 
    
this.onEnterFrame = function() { 
   for (k = 1 ; k <= Nmcs ; k++) { 
      mc0 = eval("imgMC" + ".MC"+k); 
      mc1 = eval("imgMC" + ".MC"+((k % (Nmcs)) +1)); 
      mc2 = eval("imgMC" + ".MC"+ ((k -1) % Nmcs + Nmcs *( k == 1))); 
      if((mc0._y) >= altura && velo > 0){ 
        mc0._y = mc1._y -  mc0._height - espacio - velo*(k == Nmcs); 
      } 
      mc0._y += velo; 
      if(mc2._y + mc2._height <=  altura    && velo < 0){ 
         mc0._y = mc2._y  +  mc2._height + espacio + velo * (k ==1); 
      } 
  } 
} 
/* Las siguientes funciones son para controlar el scroll con el ratón. 
Entrar en el scroll con el ratón = Parar 
Salir del scroll con el ratón = Vuelve a la velocidad de inicio 
Click en el scroll = Varía velocidad y dirección
 dependiendo de su posición. 
*/ 
imgMC.mascara.onPress = function () { 
  velo = (Yc + imgMC.mascara._height / 2 - _ymouse) / 20; 
} 
imgMC.mascara.onRollOut = function () {velo = velobase;} 
imgMC.mascara.onRollOver = function () { velo = 0;} 

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

msie
Citar            
MensajeEscrito el 18 Ene 2007 05:09 pm
Hola Teseo, agradezco tu colaboración y el Cómo puedo hacer un scroll de éste tipo.
Lo cierto es que me gustaría arreglar este, no se, depués de pegarme con el horas, sabiendo que funciona ya que lo he rescatado d eun tutorial de aquí de Cristalab:

http://www.cristalab.com/tutoriales/57/menu-con-efecto-de-easing-para-novatos



Sólo qeu al situarlo en vertical y añadir más _mc ... pues se ha escacharraoooo !!!


:?


~koballo~

Por koballo

708 de clabLevel



 

safari

 

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