Comunidad de diseño web y desarrollo en internet online

Ayuda a simplificar ActionScript 2.0

Citar            
MensajeEscrito el 15 Dic 2008 11:30 pm
Muy buenas a todos, creo este tema para ver si alguien me puede ayudar con la simplificación de un código en AtionScript y de paso debatiremos cual es la mejor opción... ok.
Espero que me puedan ayudar.

El proyecto consiste en la creación de 3 botones con efecto. La idea es que al iniciar el flash el primero este encendido, y los demás apagados, luego si c presiona uno el que estaba encendido c apaga con un fadeout (cambio de color de reposo). Les escribo el código que he estado haciendo aunque es un poco largo para su función :P pero bueno.
Otra cosa este código tiene un error que no logro solucionar, y es que si presionas un botón el que esta prendido c apaga, hasta ahí todo bien, pero lo malo es que el que esta inactivo, el que no c le a hecho nada, recobra vida y c activa y desactiva.. :?

Gracias.

function off() {
boton1.enabled = true;
boton2.enabled = true;
boton3.enabled = true;
}
_root.boton1.enabled = false;
_root.boton1.gotoAndStop(30);

//Boton 1
boton1.onRollOver = function() {
_root.boton1.gotoAndPlay("rollover");

};
boton1.onRollOut = function() {
_root.boton1.gotoAndPlay("rollout");

};
boton1.onRelease = function() {
_root.boton1.gotoAndPlay("press");
off();
this.enabled = false;
if ((_root.boton2.frame(40))) {
} else {
_root.boton2.gotoAndPlay("pressout");
_root.boton3.gotoAndPlay("pressout");
}
};

//Boton2
boton2.onRollOver = function() {
_root.boton2.gotoAndPlay("rollover");
};
boton2.onRollOut = function() {
_root.boton2.gotoAndPlay("rollout");
};
boton2.onRelease = function() {
_root.boton2.gotoAndPlay("press");
off();
this.enabled = false;
_root.boton1.gotoAndPlay("pressout");
_root.boton3.gotoAndPlay("pressout");

};

//Boton3
boton3.onRollOver = function() {
_root.boton3.gotoAndPlay("rollover");
};
boton3.onRollOut = function() {
_root.boton3.gotoAndPlay("rollout");
};
boton3.onRelease = function() {
_root.boton3.gotoAndPlay("press");
off();
this.enabled = false;
_root.boton1.gotoAndPlay("pressout");
_root.boton2.gotoAndPlay("pressout");
};

Dejo el archivo para que lo revisen mas de cerca :wink:

Por pablofuentes88

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Dic 2008 11:42 pm

Por pablofuentes88

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2008 05:45 am
hola, voy a ser sincero, cuando lei simplificar, me llamo la atencion porque cuando programaba en c++ teniamos que hacer codigos tan pequeños que entraran en un microchip y tan eficientes que ahorraran memoria, ja pero lo que es verdad que en flash no hay tanta necesidad de eso, hay tantas cosas que corren detras de flash que si es bueno optimizar pero sin afectar una correcta lectura del codigo, y puedo decir que tu codigo no le entendi que quieres hacer, que es la funcion frame()???? bueno, prueba esto y me dice como te fue.

Código :

var botones_arr:Array = [boton1, boton2, boton3];

function off( Void ):Void
{
   for( var i in botones_arr ) botones_arr[i].enabled = false;
}

function clean( aux:MovieClip ):Void
{
   for( var i in botones_arr ) if( botones_arr[i] != aux ) botones_arr[i].gotoAndPlay("pressout");
}

_root.boton1.enabled = false;
_root.boton1.gotoAndStop(30);

for( var i in botones_arr )
{
   botones_arr[i].onRollOver = function( Void ):Void
   {
      this.gotoAndPlay("rollover");
   };
   botones_arr[i].onRollOut = function( Void ):Void
   {
      this.gotoAndPlay("rollout");
   };
   botones_arr[i].onRelease = function( Void ):Void
   {
      this.gotoAndPlay("press");
      off();
      if( this._currentframe != 40 )
      {
         this.owner.clean( this );
      }      
   };   
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 16 Dic 2008 05:46 am
ups, me equivoque en algo, no es this.owner, es this._parent.clean( this );

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 16 Dic 2008 06:57 am
Muchas gracias por tu respuesta, y que pena, esa parte de frame esta mal, bueno desde que empieza el if hasta que termina ese el else, olvide quitarlo fue una prueba fallida. :)
Voy a probar el código que me mandaste y te aviso.
Y nuevamente gracias por la ayuda.

Por pablofuentes88

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2008 07:10 am
Hola LongeVie
Puse tu código y cuento lo que paso. El primer botón se queda activado, eso esta bien, la animación de fadein y fadeout funciona, pero cuando hago click en un botón todo queda bloqueado. Gracias por tu ayuda.

Por pablofuentes88

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2008 07:22 am
pues si, todo se blokea porque se ejecuta la funcion off() que blokea todo, tu cuentame que es lo que quieres que pase cuando se puls eun boton y te lo modifico, lo unico que hice fue simplificar lo que tenias. saludos!

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 16 Dic 2008 02:29 pm
Hola LongeVie.
Bueno la idea de lo que quiero hacer en un menú para una pagina web, el cual cuando aplasto botón 1, este recorre una animación de activación y para en un frame que c vea como si estuviese aplastado. Luego si c presiona botón 2, este hace que el botón que esta activado ejecute la animación a estado reposo y al mismo tiempo el botón 2 ejecuta la animación de activado. Lo que he estado tratando de hacer es crear una condicional, pero no tengo idea de como hacerlo :'( .
Bueno espero haberme explicado bien.
Gracias de antemano.

Por pablofuentes88

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Dic 2008 06:41 pm
Hola aqui esta el nuevo codigo, te aconsejo que en el futuro no uses numeros de frames, usa solo nombres de frames, es por eso que quite la parte de boton1.gotoAndStop(30); porque no sabia que hacia mejor la quite, prueba el codigo y dime que esta haciendo mal, y ponle nombre a todos los frames porfavor, ha y quite lo de enabled y la funcion off, porque lo que me dijieste alla arriba, no se puede hacer si se pone en enabled false a alguno, de todas formas cuentame como te va con este script, saludos:

Código :

var botones_arr:Array = [boton1, boton2, boton3];

function desactivar( aux:MovieClip ):Void
{
   for( var i in botones_arr ) if( botones_arr[i] != aux ) botones_arr[i].unpress();
}

for( var i in botones_arr )
{
   var aux:MovieClip = botones_arr[i];
   aux.selected = false;
   aux.over = function( Void ):Void
   {
      if( !this.selected )
      {
         this.gotoAndPlay("rollover");
      }      
   };
   aux.out = function( Void ):Void
   {
      if( !this.selected )
      {
         this.gotoAndPlay("rollout"); 
      }      
   };
   aux.press = function( Void ):Void
   {
      this.selected = true;
      this.gotoAndPlay("press");
   };
   aux.unpress = function( Void ):Void
   {
      this.selected = false;
      this.gotoAndPlay("pressout");      
   };
   aux.onDragOver = aux.onRollOver = aux.over;
   aux.onDragOut = aux.onRollOut = aux.onReleaseOutside = aux.out;
   aux.onRelease = function( Void ):Void
   {
      //Si estoy presionado
      if( this.selected )
      {
         //me desactivo
         this.unpress();
      }
      else// si no estoy presionado
      {
         //desactivo a mis compadres
         this._parent.desactivar( this );
         //me activo
         this.press();         
      } 
   };   
}

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 03 Mar 2009 08:13 am
Hola, muxas gracias por tu rápida respuesta.
Ahora mismo me pongo en ello aunke soy un pokitín negadillo con estos asuntos...

Riqui

Por riqui

3 de clabLevel



 

safari
Citar            
MensajeEscrito el 03 Mar 2009 08:47 am
Rapida respuesta? este post tiene meces! :P

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox

 

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