Comunidad de diseño web y desarrollo en internet online

Ayuda con for en As3

Citar            
MensajeEscrito el 26 Jun 2009 03:29 pm
Por muchos tutos que leo no consigo aplicar en la practica lo de los bucles for y mas se me complica con As3.
Lo que quiero hacer es lo siguiente, tengo 3 botones, btn_1, btn_2 y btn_3.
Quiero que al pulsar uno de ellos ,aparezca un movie clip, que a su vez tendra uno dentro y dependiendo del boton vaya a un fotograma determinado de este ultimo mc.
Estructura: Linea principal con botones/contenedor/textos con fotograma 1 2 3
Lo que he conseguido es que si todo esta en la linea principal funcione pero necesito que este como he comentado.
El codigo es este:

Código :

for (var i:Number = 1; i <= 3; i++)
{
   this["btn_" + i].addEventListener(MouseEvent.CLICK,clicBoton);
}
function clicBoton(e:MouseEvent)
{
   //gotoAndPlay ("2")
   var nombre:String = e.currentTarget.name;
   var num:uint = uint(nombre.replace("btn_", ""));
   
 if (btn_1){
    gotoAndPlay ("2");}
    else if (btn_2){gotoAndPlay ("3");}
    else if (btn_3){gotoAndPlay ("4");}
 //trace("Soy el botón " + num);
}
stop();


A parte me gustaria que supongo que se podra, simplificar el trozo del If(btn_1) gotoAndPlay ("1"), de alguna manera, ya que de ejemplo pongo 3 botones pero mi idea es meter 17.
Lo que he probado es meter esta ruta:
contenedor.textos.gotoAndStop ("2") por ejemplo pero no funciona.

Gracias.

Por pepito piscinas

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 27 Jun 2009 01:53 am
Si has decidido migrar a AS3 no debes seguir con este método de trabajo, de lo contrario te dará más dolores de cabeza que los que te solucionará. Para trabajar con este lenguaje es mejor una estructura de clases y olvidarse del código en el timeline.

En cuanto a tu pregunta, haces una condición con variables btn_1, btn_2, btn_3 que no existen, si trabajaras comparando el nombre del botón presionado con un string "btn_1", "btn_2", etc no tendrías problemas, de todas formas es mejor que utilices un arreglo con los frames a donde quieres que se dirija cada botón y accedes al index del arreglo guiándote por el número del botón:

Código ActionScript :

var frames:Array=[2,3,4];

for (var i:uint = 1; i <= 3; i++) {
   this["btn_"+i].addEventListener(MouseEvent.CLICK,clicBoton);
}

function clicBoton(e:MouseEvent):void {

   var nombre:String=e.currentTarget.name;
   var num:uint=uint(nombre.replace("btn_",""));

   contenedor.textos.gotoAndStop(frames[num - 1]);

}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Jul 2009 11:56 pm
Con 5 botones no funciono con el arreglo

Por Ursulo

11 de clabLevel



 

safari
Citar            
MensajeEscrito el 02 Jul 2009 12:14 am
aprovechando el primer codigo aqui va uno que me funciono aunque no sea optimo:


btn_1.addEventListener(MouseEvent.CLICK,clicBoton);
btn_2.addEventListener(MouseEvent.CLICK,clicBoton);
btn_3.addEventListener(MouseEvent.CLICK,clicBoton);
btn_4.addEventListener(MouseEvent.CLICK,clicBoton);
btn_5.addEventListener(MouseEvent.CLICK,clicBoton);

function clicBoton(e:MouseEvent)
{
//gotoAndPlay ("2")
var nombre:String = e.currentTarget.name;
if(e.currentTarget.name=="btn_1"){
gotoAndStop(2); }
else if(e.currentTarget.name=="btn_2"){
gotoAndStop(3); }
else if(e.currentTarget.name=="btn_3"){
gotoAndStop(4); }
else if(e.currentTarget.name=="btn_4"){
gotoAndStop(5); }
else if(e.currentTarget.name=="btn_5"){
gotoAndStop(6); };
}
stop();

Por Ursulo

11 de clabLevel



 

safari
Citar            
MensajeEscrito el 02 Jul 2009 07:51 am
Con un arreglo serviría así fueran infinitos botones, sólo debes añadir al arreglo los frames a los que deseas ir. Ahora en tu caso específico donde el boton_1 va al frame 2, el boton_2 va al frame 3, el boton_3 va al frame 4, etc, lo que debes hacer es guiándote por el nombre de el botón ir a ese frame más uno:

Código ActionScript :

for (var i:uint = 1; i <= 5; i++) { 
   this["btn_"+i].addEventListener(MouseEvent.CLICK,clicBoton); 
} 
 
function clicBoton(e:MouseEvent):void { 
 
   var nombre:String=e.currentTarget.name; 
   var num:uint=uint(nombre.replace("btn_","")); 
 
   gotoAndStop(num + 1); 
 
} 

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox

 

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