Comunidad de diseño web y desarrollo en internet online

Indicar múltiples números

Citar            
MensajeEscrito el 27 May 2008 02:49 pm
Muy buenas a todos. Tengo el siguiente problema:

He hecho ocho movieClips de nombre "menu" más un número del 1 al 8. Queda así: "menu1, menu2, menu3", etc. A todos los botones les asigné la misma función, pero a medida que vaya complementando los códigos, las funciones irán variando. Cambiarlos uno por uno es realmente aburrido.

Mi problema es ¿cómo, a través de un código ActionScript, puedo asignarle a la letra "n" que su valor sea reemplazable por los números del 1 al 8 para comenzar a asignar actionScripts a todos los menús a modo "menu[n].onRollOver..." ? ¿Es esto posible? Por lo que he visto, lo más cercano a esto es:

Código :

var i=1; i<9; i++

Pero no sé cómo aplcarlo a los onRollOver, onRollOut y onRelease. ¿Me pueden ayudar por favor?

Por Klilo

8 de clabLevel



Genero:Masculino  

Chile

msie7
Citar            
MensajeEscrito el 27 May 2008 02:57 pm
Prueba

Código :

for(var i=1; i<=9;i++){
   menu[n].onRollOver = function(){
     //por this._name puedes distinguir que menu eres
   }
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 May 2008 05:24 pm
Muchas gracias, Jorge, pero lo que debía colocar no era "menu[n]", era lo siguiente:

Código :

for (var n=1; n<8; n++){
   this["menu"+n].onRollOver=function()...

Con esto, todo bien, pero ahora tengo otro problema (siento ser tan molestoso).
Tengo un MC llamado "header". Dentro de éste hay una imagen y una máscara. La imagen la he convertido en MC y la llamé "header1". Lo que busco ahora es que al hacer clic en el botón "menu1" la imagen "header1" se mueva con Easing hacia la coordenada y 0, para que se pueda ver a través de la máscara. He intentado lo siguiente pero no ha resultado:

Código :

for (var n=1; n<8; n++){
   this["menu"+n].onRelease=function(){
      correHeader();
      this.enabled=false;
      this.useHandCursor=false;
      this.x=50;
   }
}

function correHeader(){
   for (var n=1; n<8; n++) {
      header.header[n].y=0;
   }
}

Es de esperar que si le hago clic a "menu3" se mueva la imagen "imagen3". ¿Se puede lograr? Agradeceré muchísimo su ayuda.

Por Klilo

8 de clabLevel



Genero:Masculino  

Chile

msie7
Citar            
MensajeEscrito el 27 May 2008 05:45 pm
Sorry, no era un array, pero lo sacaste fácil ;)
Lo otro es mas fácil aún:

Código :

for (var n=1; n<8; n++){
   this["menu"+n].nr = n
   this["menu"+n].onRelease=function(){
      correHeader(this.nr);
      this.enabled=false;
      this.useHandCursor=false;
      this.x=50;
   }
}


Luego la función correHeader recibe como argumento el nro de botón que se ha clickado, luego ya sabes desde donde viene la llamada

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 May 2008 06:02 pm
Ok, pero ¿cómo construyo el correHeader agregándole el "this.nr"? No me resulta con "header.header[n].y=0;" y si lo hago con "header.this["header"+n].y=0;" me tira un error.

Por Klilo

8 de clabLevel



Genero:Masculino  

Chile

msie7
Citar            
MensajeEscrito el 27 May 2008 06:31 pm
Si header tiene dentro varios MC llamados header1, header2, header3, etc, sería

Código :

function correHeader(nr:Number){
     header["header"+nr].y = 0
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 27 May 2008 06:40 pm
Jorge, te agradezco MUCHÍSIMO de veras tu ayuda. Muchas gracias ;)

Por Klilo

8 de clabLevel



Genero:Masculino  

Chile

msie7
Citar            
MensajeEscrito el 27 May 2008 07:45 pm
Una cosita más... muy poco sé de Flash o ActionScript, tanto así que ni siquiera sé si existe una expresión de excepciones. Necesito alguna para lo siguiente:

Si hago clic en "menu2", se mueve "header2", pero el problema está en que la imagen anterior queda aún ahí en el header. Me enseñaste a cómo llamar a un objeto de entre varios números, y a llamar al objeto que acabo de presionar. Pero ¿qué hacer si lo que quiero es llamar a todos los objetos EXCEPTO el que acabo de marcar? La cosa es la siguiente: si marco "menu3", quiero que todos los otros headers bajen a y 200 para que el "header3" baje a y 100 y se vea. Para esto tengo dos dudas:
1. ¿Se puede llamar al objeto que MARQUÉ antes?
2. Si no se puede, ¿se pueden llamar a todos los objetos EXCEPTO el que estoy marcando?

Todo lo que tengo y que no me resulta es esto:

Código :

for (var n=1; n<8; n++){
   this["menu"+n].nr=n;
   this["menu"+n-nr].f=n;...

   this["menu"+n].onRelease=function(){
      enableBtn();
      saleHeader(this.f);
      correHeader(this.nr);...

function saleHeader(f:Number){
   header["header"+f]._y=100;
   header["header"+f].y=200;
}


Lo que quería decir en "this["menu"+n-nr].f=n;" era que exista un número de entre todos los que existen (n) excepto el que acabo de marcar (nr) y que se llame "f". Luego en la función "saleHeader" le pido al "header" con el número "f" que baje a y 200.

Espero que se haya entendido... ¿me pueden ayudar por favor?

Por Klilo

8 de clabLevel



Genero:Masculino  

Chile

msie7
Citar            
MensajeEscrito el 27 May 2008 08:04 pm
Algo así

Código :

function correHeader(nr) {
   for (var n = 1; n<8; n++) {
      header["header"+n].y = (nr == n) ? 200 : 0;
   }
}


Por cierto, si y se refiere a la pocisión (y estás en AS2) debe ser _y
Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Jun 2008 07:39 pm
Tengo el problema otra vez. Tengo todas las imágenes "header[n]" puesto dentro del MC "header", pero no responden correctamente al presionar los menús. He seguido el paso anterior y no ha pasado mucho. Se mueven las imágenes, pero presiono el botón "menú1" y se mueve la imagen "header5".

Eso sí, debo agregar algo. Cuando "llevo al frente" o "dejo atrás" una imagen por delante o por detrás de otra, el resultado varía. ¿Tiene algo que ver el behaviors.DepthControl? ¿Cómo hacer para "llevar al frente" la imagen "header[n]" correspondiente al "menu[n]" que estoy presionando? De veras siento joder tanto :P

Por Klilo

8 de clabLevel



Genero:Masculino  

Chile

firefox
Citar            
MensajeEscrito el 03 Jun 2008 10:03 pm
pero presiono el botón "menú1" y se mueve la imagen "header5".


Eso es fácil de ver, traza el nro:

Código :

this["menu"+n-nr].f=n;...

   this["menu"+n].onRelease=function(){
     trace(this.f)
      enableBtn();
      saleHeader(this.f);
      correHeader(this.nr);...
   }


traza las variables que manejas en el onPress, seguramente alguna no estará seteada adecuadamente

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.