Comunidad de diseño web y desarrollo en internet online

Animaciones de entrada y salida de menu con for, Array y addTarget

Citar            
MensajeEscrito el 11 Abr 2012 07:21 pm
Hola, resulta que tengo un problema, al click en la pagina en construccion que estoy haciendo se visualiza mejor.
web del problema

Cuando se realiza click en los botones (texto secundario) del primer menu (otros),verán que las animaciones funcionan perfectamente, al presionar uno sale y el anterior contenido emprede otra animacion.
Pero en los sucesivos (quienes somos, militancia, etc), no ocurre la animacion de movimiento de entrada ni salida.

Los botones, desplegables y los contenedores fueron creados mediante Array y for.

La funcion moviendo_contenido, se basa en la funcion realizada para asignar las animaciones de los menues despegables, la cual, verán un funcionamiento correcto.

El echo de que solo funcione en el primer caso del array (cuyo valor es 0) me hace indicar que no está funcionando el for principal

Código ActionScript :

var tirar_contenido:int = 100;
var tirar_contenido2:int = 100;
function entra(Event:MouseEvent):void //esta es la funcion cuando hacemos click
{
   for (var b:int=0; b<8; b++)
   {
      for (var t:int=0; t<8; t++)
      {
         switch (Event.target)
         {
            case botones[b][t] :
               tirar_contenido = b * 10 + t;
               moviendo_contenido();
               tirar_contenido2 = b * 10 + t;
               break;
         }
      }
   }
}

function moviendo_contenido():void //esta es la funcion que asigna las animaciones al contenedor
{
   for (var km:int; km<8; km++)
   {
      for (var mk:int; mk<8; mk++)
      {
         switch (tirar_contenido)
         {
            case km*10+mk :
               animacion_2.entra.addTarget(contenido[km][mk], 1);
               for (var cpu:int=0; cpu<8; cpu++)
               {
                  switch (tirar_contenido2)
                  {
                     case km*10+cpu :
                        animacion_2.sale.addTarget(contenido[km][cpu], 1);
                        tirar_contenido2 = 100;
                        break;
                  }
               }
               tirar_contenido = 100;
               break;
         }
      }
   }
}


Bueno gracias a quienes lean e intenter ayudar

Por deuteros1991

2 de clabLevel



Genero:Masculino  

Militante

firefox
Citar            
MensajeEscrito el 11 Abr 2012 09:13 pm
Ni miré la pregunta, pero me llamó la atención el código por su extremo barroquismo, en la función moviendo_contenido tienes el siguiente anidamiento:

- dos for + 1 switch + 1 for + 1 switch

O eres matrix o el rendimiento es entre malísimo y pésimo, con altas probabilidades de froze. El otro problema es que un código de este estilo es practicamente imposible de debugear. En síntesis: tienes un problema de estructura, deberías estructurar tu código de forma eficiente y legible.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Abr 2012 12:37 am

solisarg escribió:

Ni miré la pregunta, pero me llamó la atención el código por su extremo barroquismo, en la función moviendo_contenido tienes el siguiente anidamiento:

- dos for + 1 switch + 1 for + 1 switch

O eres matrix o el rendimiento es entre malísimo y pésimo, con altas probabilidades de froze. El otro problema es que un código de este estilo es practicamente imposible de debugear. En síntesis: tienes un problema de estructura, deberías estructurar tu código de forma eficiente y legible.

Jorge


todo bien maestro, pero si entras a bardear, prefiriría que no comentes.
Es decir, tu comentario no aporta nada,.

La funcion anda bien en los menues desplegables y en los clicks, no tiene ningun frozen ni nada.
Lo unico que pasa es que la ventana de los siguientes botones no se animan.

Saludos y sino aportas sugerencias evita seguir comentando, gracias.

Por deuteros1991

2 de clabLevel



Genero:Masculino  

Militante

firefox
Citar            
MensajeEscrito el 12 Abr 2012 12:44 am
para ese estilo de menu te recomiendo hacerlo con otra funcion a base de botones esta exelente pero yo lo he hecho de otra forma solo te doy otra opcion no una solucion a tu problema espero la veas como ya una opcion si no kieres batallar con esa te dejo el tutorial entero aver si es lo que quieres lograr saludos:

sugerencia

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 03:20 pm
sidentelrgamer: parece que tienes mucho amor por ese tuto ;)

deuteros1991:

¿Dos for con un switch que entra en un for con otro switch?

El código es malo, tiene demasiada anidación y es imposible de debugear. No es bardeo, son hechos. Si no te gusta que te critiqen, escribe mejor código antes de postearlo.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Abr 2012 03:51 pm

sidentelrgamer escribió:

para ese estilo de menu te recomiendo hacerlo con otra funcion a base de botones esta exelente pero yo lo he hecho de otra forma solo te doy otra opcion no una solucion a tu problema espero la veas como ya una opcion si no kieres batallar con esa te dejo el tutorial entero aver si es lo que quieres lograr saludos:

sugerencia

Gracias


Me ha servido de mucho,

no necesite una reingeniería completa. Lo que hice fue tomarlo como base y "automatizarlo con for y array.
con esta funcion creo los valores boleanos de tu tutorial para los 64 botones

Código ActionScript :

var menup:Array = new Array();
for (var j:int = 0; j<8; j++)
{
   menup[j] = new Array();
   for (var liu:int =0; liu<8; liu++)
   {
      menup[j][liu] = Boolean;
      menup[j][liu] = false;
   }
}


Luego inserto los botones, tambien con array y for para ahorrar lineas y no llenar la biblioteca con duplicados

Código ActionScript :

var botones:Array = new Array();
for (var b=0; b<8; b++)
{
   botones[b] = new Array();
   for (var t=0; t<8; t++)
   {
      botones[b][t] = new botoncito ; //botoncito es el nombre que le di a nosotros_mc para exportarlo desde la biblioteca y crear instancis desde ahi.
      botones[b][t].x = 0;
      botones[b][t].y = 22 + 90 * t;
      botones[b][t].visible = false;
      botones[b][t].mouseChildren = false;
      botones[b][t].buttonMode = true;
      menu[b].addChild(botones[b][t]);
      botones[b][t].addEventListener(MouseEvent.CLICK, entra);
      botones[b][t].addEventListener(MouseEvent.MOUSE_OVER, sobreMi);
      botones[b][t].addEventListener(MouseEvent.MOUSE_OUT, fueraMi);
   }
}


Luego las funciones igual al tuto que pasaste

Código ActionScript :

function sobreMi(event:MouseEvent):void
{
   event.target.gotoAndPlay("Sobre");
}

function fueraMi(event:MouseEvent):void
{
   event.target.gotoAndPlay("Fuera");
}



Y por ultimo la funcion entra, que vueve a usar for para evitar rehacer una funcion para cada boton y tener una funcion única maestra.

Código ActionScript :

function entra(Event:MouseEvent)
{
   for (b=0; b<8; b++)
   {
      for (t=0; t<8; t++)
      {
         if (menup[b][t])
         {
            animacion_2.contorneando.addTarget(contenido[b][t], 1);
            botones[b][t].gotoAndPlay("Fuera2");
            botones[b][t].addEventListener(MouseEvent.MOUSE_OVER, sobreMi);
            botones[b][t].addEventListener(MouseEvent.MOUSE_OUT, fueraMi);
            botones[b][t].addEventListener(MouseEvent.CLICK, entra);
            menup[b][t] = false;
         }
         switch (Event.target)
         {
            case botones[b][t] :
               botones[b][t].gotoAndPlay("Click");
               animacion_2.contorno.addTarget(contenido[b][t], 1);
               menup[b][t] = true;
               botones[b][t].removeEventListener(MouseEvent.MOUSE_OVER, sobreMi);
               botones[b][t].removeEventListener(MouseEvent.MOUSE_OUT, fueraMi);
               botones[b][t].removeEventListener(MouseEvent.CLICK, entra);
               break;
         }
      }
   }
}



En total son mas o menos 70 líneas para aplicar 4 movimientos distintos a los botones y una animacion de entrada y salida a cada uno de los 64 contenidos.

En el tutorial que pasaste usa mas de 90 para 3 botones y 3 contenidos. Creo demostrar que el array y el for se ahorran lineas.

muestro que funciona

web

PD solisarg LTA :D :D

Por deuteros1991

2 de clabLevel



Genero:Masculino  

Militante

firefox
Citar            
MensajeEscrito el 12 Abr 2012 04:06 pm
me alegro ke te funcionara tu pag =) si soliarg le tengo mucho amor al tuto por que me ah funcionado para iniciarme en menus de boton jejejeje

Por sidentelrgamer

61 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Abr 2012 05:33 pm
¿La parte del doble for con switch mas for mas switch la dejaste o fue parte del pequeño cambio?

¿70 líneas? Impresionante, ¡sigue así!

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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