Comunidad de diseño web y desarrollo en internet online

¿Alguien sabe por qué no funciona?

Citar            
MensajeEscrito el 20 Ago 2010 06:07 pm
Muy buenas


Tengo este código para dar la misma accion (funcion) a todos los botones


Código ActionScript :

for (var p:int = 0; i <9 ; i++) 
         {
            this["i" + p].addEventListener(MouseEvent.ROLL_OVER,overBoton);
            this["i" + p].addEventListener(MouseEvent.ROLL_OUT, outBoton);
            this["i" + p].buttonMode = true;
            this["i" + p].mouseChildren = true;
         }


Tengo las funciones creadas correctamente pero me da error.

Los botones se llaman i00 i01 i02... así hasta 10

Por zink1314

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Ago 2010 06:17 pm
BuenAS:

Una de dos, o le quitas el cero a los nombres de los botones (i0, i1...) o pones this["i0" + p] en el bucle.

Otra cosa, si llegas hasta i010, el bucle tendría que llegar a for (var p:int = 0; i <=10 ; i++) .

Antes de que hagas copy&paste y te falle por cualquier detalle ;) intenta comprender lo que hace el bucle, tal como lo tienes ahora genera los nombres:

this["i0"], this["i1"], this["i2"], this["i3"] ...this["i8"]

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 20 Ago 2010 06:40 pm
Si, tienes razón, mira que es de las primeras cosas en las que me daba de cabeza (y aun sigo haciendolo). Muchas gracias, ya no me da error, pero solo me funciona en el primero (i0) el resto hasta "i14" no hace nada.

Código ActionScript :

for (var p:int = 0; i <=14 ; i++) 
         {
            this["i" + p].addEventListener(MouseEvent.ROLL_OVER,overBoton);
            this["i" + p].addEventListener(MouseEvent.ROLL_OUT, outBoton);
            this["i" + p].buttonMode = true;
            this["i" + p].mouseChildren = true;
         }


he probado también con i <=13 pero nada de nada, solo funciona en el primero y no da ningun error.

Te pongo también las dos funciones por si acaso:

Código ActionScript :

private function overBoton(e:MouseEvent):void 
      {
         TweenLite.to(e.target, 0.4, {alpha:1, scaleX:1.1, scaleY:1.1, delay:0});
      }
      private function outBoton(e:MouseEvent):void 
      {
         TweenLite.to(e.target, 0.4, {alpha:0.5, scaleX:1, scaleY:1, delay:0});
         
      }


Ayudame por favor, que casi damos con ello a la primera y puede hacerme ganar un trabajo el lunes cuando envie el portfolio XD. Muchas gracias!

Por zink1314

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Ago 2010 07:06 pm
Pues en principio este código parece estar correcto. ¿Ha añadido los imports de TweenLite:

Código ActionScript :

import gs.TweenLite;
import gs.easing.*;


Y supongo que tienes las clases de TweenLite.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 20 Ago 2010 07:13 pm
Los Tweener me los coge perfectamente. puedes verlo en el link. http://www.rese7.com/portfolio/

Te dejo el código final pero si funciona en el primero, no entiendo que no funcine en el resto, y los nombres de instancia son correctos i0 i1 i2 i3 i4 i5 i6 i7 i8 i9 i10 i11 i12 i13 i14

No se te ocurre nada?

Código ActionScript :

for (var p:int = 0; i <=14 ; i++)
{
this["i" + p].addEventListener(MouseEvent.ROLL_OVER,overBoton);
this["i" + p].addEventListener(MouseEvent.ROLL_OUT, outBoton);
this["i" + p].addEventListener(MouseEvent.CLICK, clickBoton);
this["i" + p].buttonMode = true;
this["i" + p].mouseChildren = true;
}


Código ActionScript :

private function overBoton(e:MouseEvent):void
{
TweenLite.to(e.target, 0.4, {alpha:1, scaleX:1.1, scaleY:1.1, delay:0});
}
private function outBoton(e:MouseEvent):void
{
TweenLite.to(e.target, 0.4, {alpha:0.5, scaleX:1, scaleY:1, delay:0});

}
private function clickBoton(e:MouseEvent):void
{
e.target.alpha = 1;
e.target.gotoAndStop("2");
e.target.parent.setChildIndex( e.target , e.target.parent.numChildren-1);
TweenLite.to(e.target, 0.4, {alpha:1, scaleX:3, scaleY:3, delay:0});
e.target.addEventListener(MouseEvent.MOUSE_MOVE, function(ev:MouseEvent){
e.target.gotoAndStop("1");});

}




Gracias!

Por zink1314

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Ago 2010 07:18 pm
...acabo de verlo, en el for llamas a la variable p al princio, y luego i.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 20 Ago 2010 07:30 pm
Tienes toda la razón!

Aún asi sigue igual... Sólo me lo hace en el primero snif!

Mil gracias de todas maneras me tocara hacerlo manual 1 por 1, pero es lo que hay.


RESPECT

Por zink1314

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Ago 2010 07:31 pm
por cierto si le pongo "P" donde está "i" el flash no peta pero se queda tostadisimo, si le dejo la i no!!!!! por qué puede ser eso? increible... solo tengo dos for...

Por zink1314

25 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Ago 2010 07:33 pm
Qué fuerte...

He puesto la variable "i", en vez de "p", y eso que ya tengo anteriormente otro for con la variable "i". Al exportarlo me dice que Warning: 3596: Duplicate variable definition. pero funciona todo y va suave como la seda!!!!!


Muchas gracias!!!!

Por zink1314

25 de clabLevel



 

firefox

 

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