Comunidad de diseño web y desarrollo en internet online

¿? Ahorrar lineas de codigo ¿?

Citar            
MensajeEscrito el 23 Mar 2007 10:32 pm
Hola, una consulta. Necesito ahorrar lineas de codigo en actionscript, aqui les comento mi inconveniente.

En la escena tengo un MC (de un mapa de una ciudad) y dentro de ese MC tengo varios botones (que me representan sitios determinados dentro de la ciudad). Bueno, lo que yo utilizo al pasar sobre cada boton para mostrar informacion es OnRollOver y para ocultar esa informacion utilizo luego OnRollOut pero al ir agregando sitios para mostrar en la ciudad voy incrementando mis lineas de codigo de manera notable. Ya he intentado pero no pude crear una funcion para cada vez que utilizo OnRollOver y otra para OnRollOut. Yo quisiera saber de que manera puedo ahorrarme tantas lineas de codigo implementando alguna o algunas funciones. A continuacion les dejo un ejemplo de lo que tengo en cada OnRollOver y en cada OnRollOut.

OnRollOver:

Código :

mapa.c001.onRollOver = function() {
     cambia("Plaza Central");
      mapa.e001._visible=true;
      generarListado(mapa.c001._name);
     pantalla._visible=true;
};


OnRollOut:

Código :

mapa.c001.onRollOut = function() {
   para();
   mapa.e001._visible=false;
};


Bueno espero haberme explicado bien para poder recibir ayuda. Desde ya muchisimas gracias. Saludos ^^ [/quote]

Por ilbimbodeoro

25 de clabLevel



Genero:Masculino  

Argentina

firefox
Citar            
MensajeEscrito el 24 Mar 2007 03:37 am
Suponiendo que los botones se llaman c001, c002, c003 podrias poner el nombre en un array:

Código :

var datos:Array = new Array();
datos[0] = "Plaza Central"
datos[1] = "Mi casa"
datos[2] = "La municipalidad"


De esta forma es muy facil de visualizar, pero si en serio quieres hacer todo en una linea puedes hacer:

Código :

var datos:Array = new Array("Plaza Central","Mi casa","La municipalidad");


Y en los botones haces un bucle for que les asigne automaticamente las funciones a cada uno:

Código :

for (n=0; n<datos.length; n++) {
//En esta parte se convierte un 0 en un 001, un 1 en un 002, etc.
   if (n<100 && n>10) {
      i = "0"+String(Number(n+1));
   } else if (n<10) {
      i = "00"+String(Number(n+1));
   }
//Aca se le crea la variable i en el boton, en la cual esta escrita su propio numero.
   mapa["c"+i].i = i;
//Se asignan las funciones
   mapa["c"+i].onRollOver = function() {
      cambia(datos[this.i]);
      mapa["e"+this.i]._visible = true;
      generarListado(mapa["c"+this.i]._name);
      pantalla._visible = true;
   };
   mapa["c"+i].onRollOut = function() {
      para();
      mapa["e"+this.i]._visible = false;
   };
}
//Te dice hola
trace("hola");

Espero haberte podido ayudar. ^^

Por Nandonet

82 de clabLevel



Genero:Masculino  

No me despierten, estoy ocupado

firefox
Citar            
MensajeEscrito el 24 Mar 2007 10:25 pm
Hola amigo, te comento que probe con la ayuda que me diste y la verdad quede maravillado. Gracias a tu importantisimo aporte ahora mi actionscript quedo mas comprensible y lo mejor que ahora con una elegante funcion ya no tengo que copiar y pegar n veces el mismo codigo que ya me estaba dando problemas. Muchisimas gracias!!!!!!! ^^ ^^ ^^

Por ilbimbodeoro

25 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 24 Mar 2007 10:38 pm
Perdon, no me funciona lo del Array, cuando me poso sobre cualquier boton que me hace referencia a un sitio dentro del mapa mi tooltips me dice "undefined" y no me toma el valor que le estoy defininiendo cuando creo el Array, Ya lo probe hacer de las dos maneras, en una sola linea y luego cada valor del array uno debajo del otro y nada. Donde estara el error¿? :?

Por ilbimbodeoro

25 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 24 Mar 2007 10:48 pm
Ya lo solucione. Era un problema con el valor del indice i, esta asignando un valor fuera del Array.

La funcion quedo de esta manera:

Código :

 mapa["c"+i].onRollOver = function() {      
        cambia(sitios[this.i-1]);    // A i le restamos 1 para que apunte sobre un valor indicado dentro del array. Sino se nos disparan los indices y la funcion cambia no funcion porque no le entra ningun valor string.
        mapa["e"+this.i]._visible = true;      
        generarListado(mapa["c"+this.i]._name);      
        pantalla._visible = true;   
   };   


Ahora si todo funciona. Gracias por tu aporte. Te debo mucho amigo :D

Por ilbimbodeoro

25 de clabLevel



Genero:Masculino  

Argentina

msie7
Citar            
MensajeEscrito el 25 Mar 2007 03:59 pm
Si fue un error mio debio ser por no dormir lo suficiente.

Por Nandonet

82 de clabLevel



Genero:Masculino  

No me despierten, estoy ocupado

msie

 

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