Comunidad de diseño web y desarrollo en internet online

Aligerar código

Citar            
MensajeEscrito el 05 Jul 2007 06:42 am
Hola a todos.
Vengo con un pequeño problema con el que espero me puedan ayudar, les cuento.

Tengo un menú con 6 botones, cuando paso por encima de alguno se activa una animación en la pantalla --hasta aquí todo bien-- cuando se reproducía una animación y pasaba sobre otro botón la animación activa no volvía a su estado inicial, después de darle vueltas conseguí hacerlo y funciona a la perfección... pero es demasiado código porque tengo que ponerlo en cada botón.

Hay algúna forma de reducir este código??

Código :

btn_1.onRelease = function():Void {
   ani2_mc.onEnterFrame = function () {
      if (this._currentframe != 1) {
         this.prevFrame();
      } else {
         this.stop();
         delete this["onEnterFrame"];
      }
   };
   ani2_mc.onEnterFrame = function () {
      if (this._currentframe != 1) {
         this.prevFrame();
      } else {
         this.stop();
         delete this["onEnterFrame"];
      }
   };
   ani_3.onEnterFrame = function () {
      if (this._currentframe != 1) {
         this.prevFrame();
      } else {
         this.stop();
         delete this["onEnterFrame"];
      }
   };
   ......



Espero haberme explicado. Gracias de antemano.

Por aposta

3 de clabLevel



 

Gran Canaria

firefox
Citar            
MensajeEscrito el 05 Jul 2007 10:49 am
Una de muchas posibilidades de hacer eso para cualquier número de botones y animaciones:

Código :

anim = [ani1_mc, ani2_mc, ani3_mc, ani4_mc];
botons = [btn_1, btn_2, btn_3, btn_4, btn_5, btn_6];
for (var h = 0; h<6; h++){
   botons[h].onRelease = function():Void {
      for (var n = 0; n<anim.length; n++){
         if (anim[n]._currentframe != 1) anim[n].prevFrame();
         else anim[n].stop();
      }
   }
}


Coloca dentro del For (n) las acciones de los ani que quieras...
Aunque creo que lo que quieres es esto:

Código :

anim = [ani1_mc, ani2_mc, ani3_mc, ani4_mc, ani5_mc, ani6_mc];
botons = [btn_1, btn_2, btn_3, btn_4, btn_5, btn_6];
for (var h = 0; h<6; h++){
   botons[h].n = h; 
   botons[h].onRelease = function():Void {
         anim[this.n].gotoAndStop(1);  
   }
   botons[h].onPress = function():Void {
      anim[this.n].gotoAndPlay(1);
   }
}


Que para la animación del botón al soltar y reproduce solo la correspondiente al botón al pulsar.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 06 Jul 2007 06:47 am
Gracias Teseo. Voy a probar que tal va.

Por aposta

3 de clabLevel



 

Gran Canaria

firefox

 

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