Comunidad de diseño web y desarrollo en internet online

Optimización de código!, sugerencias : )

Citar            
MensajeEscrito el 19 Abr 2005 10:36 pm
Saludos! :D

Quiero pedirles ideas para optimizar el siguiente codigo por favor. De lo que se trata es que tengo una pelicula donde voy a desplegar un menu de forma dinamica, tengo un MC con la animacion del menu ya prefabricada y lo que hago es mandarlo llamar con un attachMovie, todo va bien excepto que quiero ligar cada opcion a una pagina web con getURL, le intente de varias formas, pero no conseguia mi proposito, solo pude hacerlo de la siguiente manera...


Código :

//Arreglos
var Opciones=new Array("Nuestra empresa","Productos y servicios","Nuestros clientes","Publicaciones","Alianzas","FAQ","Contacto","Cotizaciones");
var Links=new Array("empresa.htm","soluciones.htm","clientes.php","noticias_gral.php","alianzas.htm","faq.htm","contacto.htm","cotizacion.php");

//Variables
PosY=0;

//Creacion dinamica de MCs
for(var x=0;x<8;x++){
   attachMovie("opcMenu","opcMenu"+x,x);
   PosY=PosY+27;
   //Despliega el label del boton
   _root["opcMenu"+x].mcTexto.txtOpcion.text=Opciones[x];
       //Posiciona el boton en forma vertical
   _root["opcMenu"+x]._y=PosY;
   
   //Funciones del MC para simular el boton
        //Funcion para cuando este el mouse encima
   _root["opcMenu"+x].onRollOver=function(){
      this.gotoAndPlay("Sobre");
   }
        //Funcion para cuando este el mouse salga del MC
   _root["opcMenu"+x].onRollOut=function(){
      this.gotoAndPlay("Fuera");
   }
        //Funcion para cuando este el mouse presiona
   _root["opcMenu"+x].onPress=function(){
      this.gotoAndPlay("Presionado");
   }
   //Cuando haga click....
       _root["opcMenu"+x].onRelease=function(){
      this.gotoAndPlay("Fuera");
                //Dependiendo del nombre de instancia puedo saber a quien se le hizo clic
      switch(this._name){
         case "opcMenu0":
            getURL(Links[0],"_self")
            break;
         case "opcMenu1":
            getURL(Links[1],"_self");
            break;
         case "opcMenu2":
            getURL(Links[2],"_self");
            break;
         case "opcMenu3":
            getURL(Links[3],"_self");
            break;
         case "opcMenu4":
            getURL(Links[4],"_self");
            break;
         case "opcMenu5":
            getURL(Links[5],"_self");
            break;
         case "opcMenu6":
            getURL(Links[6],"_self");
            break;
         case "opcMenu7":
            getURL(Links[7],"_self");
            break;
      }
   }
   
}


Lo que quiero optimizar es la parte del SWITCH, hay alguna otra forma de hacerlo, intente con variables o colocando el arreglo y direccion pero siempre me tomaba en cuanta la ultima pagina fuera la opcion que fuera. Si tienen mas sugerencias, adelante soy todo ojos para estudiarlas y si les entiendo :lol: pues por que no? y hasta las implemento.

El primer codigo que tenia era el siguiente, pero nomas no funquia....

Código :

//Arreglos
var Opciones=new Array("Nuestra empresa","Productos y servicios","Nuestros clientes","Publicaciones","Alianzas","FAQ","Contacto","Cotizaciones");
var Links=new Array("empresa.htm","soluciones.htm","clientes.php","noticias_gral.php","alianzas.htm","faq.htm","contacto.htm","cotizacion.php");

//Variables
PosY=0;

//Creacion dinamica de MCs
for(var x=0;x<8;x++){
   attachMovie("opcMenu","opcMenu"+x,x);
   PosY=PosY+27;
   //Despliega el label del boton
   _root["opcMenu"+x].mcTexto.txtOpcion.text=Opciones[x];
       //Posiciona el boton en forma vertical
   _root["opcMenu"+x]._y=PosY;
   
   //Funciones del MC para simular el boton
        //Funcion para cuando este el mouse encima
   _root["opcMenu"+x].onRollOver=function(){
      this.gotoAndPlay("Sobre");
   }
        //Funcion para cuando este el mouse salga del MC
   _root["opcMenu"+x].onRollOut=function(){
      this.gotoAndPlay("Fuera");
   }
        //Funcion para cuando este el mouse presiona
   _root["opcMenu"+x].onPress=function(){
      this.gotoAndPlay("Presionado");
   }
   //Cuando haga click....
       _root["opcMenu"+x].onRelease=function(){
      this.gotoAndPlay("Fuera");
                getURL(Links[x],"_self");
   }
   
}


Espero haber sido claro, gracias por su atencion, nos leeremos luego :)

Por heberto

263 de clabLevel

1 tutorial

1 ejemplo

 

Morelia, Michoacán

firefox
Citar            
MensajeEscrito el 19 Abr 2005 11:05 pm
Tu primera idea era la correcta y más optimizada. Eso del switch...

Es normal que siempre te apareciera el último enlace en todos los botones, pues si te fijas en el código, les asignas la siguiente función:

Código :

getURL(Links[x],"_self"); 


El problema, es que cuando hagas click en los botones, la x ha recorrido todo el bucle for y ha quedado con valor 7, por lo que siempre ves la última opción...

Lo que debes hacer es almacenar el x en cada movieClip que creas de modo que mantengan fijo el índice y así hacer referencia a ellos

Código :

_root["opcMenu"+x].indice = x;
getURL(Links[indice],"_self"); 


O bien, almacenar directamente el link que quieres que abra dentro del mc

Código :

_root["opcMenu"+x].enlace= Links[x];
getURL(enlace,"_self"); 


Creo que eso debería bastar.

Ya dirás.

Salu2

Por Cyril

45 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Abr 2005 11:42 pm
Muchas gracias, entnendi muy bien tu explicacion, se me olvidaba que podia generar tambien variables locales dinamicamente. hice unos ajustes a mi codigo y quedo de la siguiente manera (ciclo for)...

Código :

//Creacion dinamica de objetos
for(var x=0;x<8;x++){
   attachMovie("opcMenu","opcMenu"+x,x);
   PosY=PosY+27;
   //Propiedades
   _root["opcMenu"+x].mcTexto.txtOpcion.text=Opciones[x];
   _root["opcMenu"+x]._y=PosY;
   _root["opcMenu"+x].enlace=Links[x];
   
   //Funciones de boton
   _root["opcMenu"+x].onRollOver=function(){
      this.gotoAndPlay("Sobre");
   }
   _root["opcMenu"+x].onRollOut=function(){
      this.gotoAndPlay("Fuera");
   }
   _root["opcMenu"+x].onPress=function(){
      this.gotoAndPlay("Presionado");
   }
   _root["opcMenu"+x].onRelease=function(){
      this.gotoAndPlay("Fuera");
      getURL(this.enlace,"_self");
   }
   
}


Gracias, nos leeremos despues. Si alguien tiene mas sugerencias son bienvenidas :D

Por heberto

263 de clabLevel

1 tutorial

1 ejemplo

 

Morelia, Michoacán

firefox

 

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