Comunidad de diseño web y desarrollo en internet online

Problemas con menú desplegable vertical

Citar            
MensajeEscrito el 25 Feb 2011 03:07 pm
Hola!

La verdad es que me acabo de registrar en el foro y no soy una gran entendida en Actionscript porque me acabo de poner a estudiarlo en un master, así que estoy más bien bastante pez en el tema.

La cuestión es que estoy intentando hacer un menú desplegable para un trabajo que me han pedido, pero no consgio saber dónde está el fallo. Se trata de un menú formado por cuatro botones en vertical y en los que dos de ellos se despliegan y sacan sus submenús correspondientes. A la hora de desplegarse no me da ningún problema, pero cuando se tienen que ocultar y todos los botones deberían volver a su punto de origen hacen un movimiento extraño. Es decir, suben más de su punto de origen y al cabo de un momento se vuelven a recolocar en lugar de quedarse directamente donde deberían. No sé si me he explicado bien :?

A ver si alguien le puede echar un vistazo al código y me puede indicar cuál es el problema. Supongo que estará en las funciones de animaOculta y animaOculta2, pero no consigo dar con ello.
Muchas gracias!!! :)



Código ActionScript :

menu.addEventListener(MouseEvent.MOUSE_OVER, fOver);
menu.addEventListener(MouseEvent.MOUSE_OUT, fOut);

function fOver (e:MouseEvent):void{

e.target.gotoAndPlay(2);

if(e.target.name == "btn1" || e.target.name == "desplegable1" 
|| e.target.name == "btnDesplegable1_1"
|| e.target.name == "btnDesplegable1_2" 
|| e.target.name == "btnDesplegable1_3" )
 {
 e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta);
 e.currentTarget.addEventListener(Event.ENTER_FRAME, animaDespliegue);
 }
   
if(e.target.name == "btn2" || e.target.name == "desplegable2" 
|| e.target.name == "btnDesplegable2_1" 
|| e.target.name == "btnDesplegable2_2")
 {
 e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta2);
 e.currentTarget.addEventListener(Event.ENTER_FRAME, animaDespliegue2);
 }
}

function fOut (e:MouseEvent):void{

e.target.gotoAndPlay(1);
      
if(e.target.name != "btn1" || e.target.name != "desplegable1"
|| e.target.name != "btnDesplegable1_1" 
|| e.target.name != "btnDesplegable1_2" 
|| e.target.name == "btnDesplegable1_3")
{
e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue);
e.currentTarget.addEventListener(Event.ENTER_FRAME, animaOculta);
}
   
if(e.target.name != "btn2" || e.target.name != "desplegable2" 
|| e.target.name != "btnDesplegable2_1" 
|| e.target.name != "btnDesplegable2_2")
{
e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue2);
e.currentTarget.addEventListener(Event.ENTER_FRAME, animaOculta2);
 
   
}


function animaDespliegue(e:Event) : void{
if(e.currentTarget.desplegable1.y < 73 || e.currentTarget.btn2 < 166.40 
|| e.currentTarget.btn3 < 205.85 || e.currentTarget.btn4 < 245.30)
  {
  e.currentTarget.desplegable1.y += 10;
  e.currentTarget.btn2.y += 10;
  e.currentTarget.btn3.y += 10;
  e.currentTarget.btn4.y += 10 ;
  }
  else
  {
  e.currentTarget.desplegable1.y = 73;
  e.currentTarget.btn2.y= 166.40;
  e.currentTarget.btn3.y= 205.85;
  e.currentTarget.btn4.y= 245.30;
  e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue);
  }
   
}

function animaOculta(e:Event) : void{
if(e.currentTarget.desplegable1.y > -58 || e.currentTarget.btn2 > 72.40 
||  e.currentTarget.btn3 > 111.85 || e.currentTarget.btn4 > 151.30)
  {
  e.currentTarget.desplegable1.y -= 10;
  e.currentTarget.btn2.y -= 10;
  e.currentTarget.btn3.y -= 10;
  e.currentTarget.btn4.y -= 10;
  }
  else
  {
  e.currentTarget.desplegable1.y = -58;
  e.currentTarget.btn2.y= 72.40;
  e.currentTarget.btn3.y= 111.85;
  e.currentTarget.btn4.y= 151.30;
  e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta);
  }
}

function animaDespliegue2(e:Event) : void{
if(e.currentTarget.desplegable2.y < 117.35 || e.currentTarget.btn3 < 180.15 
|| e.currentTarget.btn4 < 219.60)
  {
  e.currentTarget.desplegable2.y += 10;
  e.currentTarget.btn3.y += 10;
  e.currentTarget.btn4.y += 10;
  }
  else
 {
 e.currentTarget.desplegable2.y = 117.35;
 e.currentTarget.btn3.y= 180.15;
 e.currentTarget.btn4.y= 219.60;
 e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue2);
 }

}

function animaOculta2(e:Event) : void {
if(e.currentTarget.desplegable2.y > 11.35 || e.currentTarget.btn3 > 111.85 
|| e.currentTarget.btn4 > 151.30)
  {
  e.currentTarget.desplegable2.y -= 10;
  e.currentTarget.btn3.y -= 10;
  e.currentTarget.btn4.y -= 10;   
  }
  else
  {
  e.currentTarget.desplegable2.y = 11.35;
  e.currentTarget.btn3.y= 111.85;
  e.currentTarget.btn4.y= 151.30;
  e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta2);      
  }
}

Por Akariyami

0 de clabLevel



 

Estudio

firefox
Citar            
MensajeEscrito el 04 Mar 2011 06:29 pm
Bueno:
Analizando el código, vi que tenía un error, lo corregí y al darle ejecutar me dice que "MENU" no está definido, por lo que creo que es un MC. Para que pueda analizar mejor el ejemplo sería bueno que subas el archivo .FLA, así es más facil para depurar.

Código corregido:

Código ActionScript :

menu.addEventListener(MouseEvent.MOUSE_OVER, fOver); 
menu.addEventListener(MouseEvent.MOUSE_OUT, fOut); 

function fOver (e:MouseEvent):void
{  
   e.target.gotoAndPlay(2);  
   
   if(e.target.name == "btn1" || e.target.name == "desplegable1"  || e.target.name == "btnDesplegable1_1" || e.target.name == "btnDesplegable1_2"  || e.target.name == "btnDesplegable1_3" )  
   { 
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta);  
      e.currentTarget.addEventListener(Event.ENTER_FRAME, animaDespliegue);  
   }    
   if(e.target.name == "btn2" || e.target.name == "desplegable2"  || e.target.name == "btnDesplegable2_1"  || e.target.name == "btnDesplegable2_2")  
   {  
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta2); 
      e.currentTarget.addEventListener(Event.ENTER_FRAME, animaDespliegue2);  
   } 
} 

function fOut (e:MouseEvent):void
{  
   e.target.gotoAndPlay(1);        

   if(e.target.name != "btn1" || e.target.name != "desplegable1" || e.target.name != "btnDesplegable1_1"  || e.target.name != "btnDesplegable1_2"  || e.target.name == "btnDesplegable1_3") 
   { 
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue); 
      e.currentTarget.addEventListener(Event.ENTER_FRAME, animaOculta); 
   }     

   if(e.target.name != "btn2" || e.target.name != "desplegable2"  || e.target.name != "btnDesplegable2_1"  || e.target.name != "btnDesplegable2_2") 
   { 
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue2); 
      e.currentTarget.addEventListener(Event.ENTER_FRAME, animaOculta2);       
   }

}

function animaDespliegue(e:Event) : void
{ 
   if(e.currentTarget.desplegable1.y < 73 || e.currentTarget.btn2 < 166.40  || e.currentTarget.btn3 < 205.85 || e.currentTarget.btn4 < 245.30)   
   {  
   e.currentTarget.desplegable1.y += 10;   
   e.currentTarget.btn2.y += 10;   
   e.currentTarget.btn3.y += 10;  
   e.currentTarget.btn4.y += 10 ;   
   }
   else  
   {   
      e.currentTarget.desplegable1.y = 73;   
      e.currentTarget.btn2.y= 166.40;  
      e.currentTarget.btn3.y= 205.85;   
      e.currentTarget.btn4.y= 245.30;  
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue);  
   }     
} 

function animaOculta(e:Event) : void
{ 
   if(e.currentTarget.desplegable1.y > -58 || e.currentTarget.btn2 > 72.40  ||  e.currentTarget.btn3 > 111.85 || e.currentTarget.btn4 > 151.30)  
   {  
      e.currentTarget.desplegable1.y -= 10;   
      e.currentTarget.btn2.y -= 10;  
      e.currentTarget.btn3.y -= 10;  
      e.currentTarget.btn4.y -= 10;   
   }   
   else   
   {   
      e.currentTarget.desplegable1.y = -58;  
      e.currentTarget.btn2.y= 72.40;  
      e.currentTarget.btn3.y= 111.85;  
      e.currentTarget.btn4.y= 151.30;  
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta);  
   } 
} 

function animaDespliegue2(e:Event) : void
{
   if(e.currentTarget.desplegable2.y < 117.35 || e.currentTarget.btn3 < 180.15  || e.currentTarget.btn4 < 219.60)   
   {   
      e.currentTarget.desplegable2.y += 10;  
      e.currentTarget.btn3.y += 10;  
      e.currentTarget.btn4.y += 10;   
   }   
   else  
   { 
      e.currentTarget.desplegable2.y = 117.35;  
      e.currentTarget.btn3.y= 180.15;  
      e.currentTarget.btn4.y= 219.60;  
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaDespliegue2); 
   } 
}  
   
function animaOculta2(e:Event) : void 
{ 
   if(e.currentTarget.desplegable2.y > 11.35 || e.currentTarget.btn3 > 111.85  || e.currentTarget.btn4 > 151.30)  
   {   
      e.currentTarget.desplegable2.y -= 10;   e.currentTarget.btn3.y -= 10;   e.currentTarget.btn4.y -= 10;      
   }   
   else   
   {  
      e.currentTarget.desplegable2.y = 11.35;  
      e.currentTarget.btn3.y= 111.85;  
      e.currentTarget.btn4.y= 151.30;   
      e.currentTarget.removeEventListener(Event.ENTER_FRAME, animaOculta2);       
   } 
}

Por .::Manu::.

45 de clabLevel



Genero:Masculino  

Argentina - Bs.As.

msie8

 

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