Comunidad de diseño web y desarrollo en internet online

Revisando una funcion...

Citar            
MensajeEscrito el 18 Ago 2006 09:28 pm
hola, tengo unos botones con una animacion sencillisima, y le pongo un codigo en el primer frame de la pelicula principal que los maneja por medio de su nombre de instancia, hasta ahi todo normal por que los botones funcionan, este es el codigo que use:

Código :

//boton inicio
inicio_btn.onRollOver=function(){
   this.gotoAndPlay(2);
};

inicio_btn.onRollOut=function(){
   this.gotoAndPlay("out");
};

pero si me fijo en el codigo me doy cuente que lo unico que cambia de boton a boton es el nombre de instancia, y para no poner cinco veces lo mismo pues se me ocurrio ponerlo en una funcion, (nota: no soy muy bueno con el AS :crap: ) asi que hice esto:

Código :

var btnName :String ;

function animaBtn(btnName){
   
   btnName.onRollOver =function(){
      this.gotoAndPlay(2);
   };
   
   btnName.onRollOut = function (){
      this.gotoAndPlay ("out");
   };
}
animaBtn("inicio_btn");

si pongo un trace(btnName); antes de btnName.onRollOver... me muestra le valor que pasa por parametro que es inicio_btn, pero no ejecuta la animacion... alguna idea de que es lo que tengo mal, muchas gracias..^^

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

firefox
Citar            
MensajeEscrito el 18 Ago 2006 11:34 pm

Código :

var btnName :String ;

function animaBtn(btnName){
   
   this[btnName].onRollOver =function(){
     trace("paso por encima");
   };
   
   this[btnName].onRollOut = function (){
      trace("se fue");
   };
}
animaBtn("inicio_btn");


:)

Por J

148 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Ago 2006 03:27 pm
orale!!!! :D muchisimas gracias, funciono perfecto, el codigo quedo asi por si alguien lo necesita completo ^^:

Código :

//variable que contiene el nombre de instancia del boton
var btnName :String ;

//funcion que ejecuta la animacion y el evento click  del boton
function animaBtn(btnName){
   this[btnName + "_btn"].onRollOver =function(){
      this.gotoAndPlay(2);
   };
   this[btnName + "_btn"].onRollOut = function (){
      this.gotoAndPlay ("out");
   };
};

//llamada de la funcion para animacion de los botones
animaBtn("inicio");
animaBtn("portafolio");
animaBtn("clientes");
animaBtn("contacto");


ahora si no es mucha molestia J, podrias explicarme por que se pone this[btnName].onRoll..... por favor, solo con fines de aprendizaje ^^ muchas gracias nuevamente.


Una pregunta mas... no tengo problema para el evento onRelease, pero quiero hacerlo por escenas y ahi si me genera un inconveniente, el codigo que use dentro de la funcion fue este:

Código :

this[btnName + "_btn"].onRelease = function (){
      this.gotoAndStop (btnName,1);

donde btnName aparte de ser el nombre de instancia del boton es el nombre de la escena, pero no funciona asi, supongo que estoy equivocado en la menera en que pongo la variable como nombre de escena, si alguien sabe le agradeceria una pista, muchas gracias ^^

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

firefox
Citar            
MensajeEscrito el 19 Ago 2006 07:01 pm
Es un remplazo que se le hace al la función eval (que esta algo pasada de moda), pero mira como funcionaria:

Código :

function animaBtn(btnName){
   
   eval(btnName).onRollOver =function(){
     trace("paso por encima");
   };
   
   eval(btnName).onRollOut = function (){
      trace("se fue");
   };
}

Como es un remplazo te puedes leer la ayuda de dicha funcion aqui.

en cuanto a lo de las escenas, no te entendi muy bien(intentas cambiar el comportamiento de un boton que se encuentra en otra escena? ), pero es seguro que alguien mas te entienda y te colabore con esa parte.

:)

Por J

148 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Ago 2006 03:45 pm
ok te lo explicare un poc mejor, la funcion de animar el boton se ejecuta correctamente pero como es una botonera debe realizar algo cuando se le de click, yo pongo esto despues de la funcion de animar,

Código :

inicio_btn.onRelease =function(){
   gotoAndStop("inicio",1);
};

y de esta manera funciona bien, pero igual la idea es poner el codigo dentro de la funcion, entonces quedo asi

Código :

//variable que contiene el nombre de instancia del boton
var btnName :String ;

//funcion que ejecuta la animacion y el evento click  del boton
function animaBtn(btnName){
   this[btnName + "_btn"].onRollOver =function(){
      this.gotoAndPlay(2);
   };
   this[btnName + "_btn"].onRollOut = function (){
      this.gotoAndPlay ("out");
   };
   this[btnName + "_btn"].onRelease = function (){
      trace(btnName);
   };
};
ahi solo le agregue la linea del onRelease y deberia funcionar pero no, no hace el trace y si no hace el trace mucho menos puede enviarme a otra escena al darle click que es la intencion principal, cabe anotar que las escenas tienen el mismo nombre que se captura en la variable btnName, espero haber sido mas explicativo, muchas gracias

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

firefox
Citar            
MensajeEscrito el 22 Ago 2006 10:09 pm
no se si te entendi bien, tu codigo esta bien, pero nunca se le hace un llamado a dicha función.

Código :

stop();
//variable que contiene el nombre de instancia del boton
var btnName :String;

btnName="inicio";                                  //   <-----asigne un valor a la variable 
//funcion que ejecuta la animacion y el evento click  del boton
function animaBtn(btnName){
   this[btnName + "_btn"].onRollOver =function(){
      this.gotoAndPlay(2);
   }
   this[btnName + "_btn"].onRollOut = function (){
      this.gotoAndPlay ("out");
   }
   this[btnName + "_btn"].onRelease = function (){
      trace(btnName);
   }
}
animaBtn(btnName);               //    <---------------  Le hago un llamado a la función


asi funciona bien.

Por J

148 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Ago 2006 02:16 pm

J escribió:

no se si te entendi bien, tu codigo esta bien, pero nunca se le hace un llamado a dicha función.

ok, muchas gracias por la respuesta, en cuanto a lo del llamado a la funcion, eso si estaba, puedes verlo en un post donde pongo el codigo completo, y por eso puse la pregunta, sin embargo no se que hice y ya funciono asi que ahora si pongo el codigo completo de la funcion del menu:

Código :

//variable que contiene el nombre de instancia del boton
var btnName :String ;

//funcion que ejecuta la animacion y el evento click  del boton
function animaBtn(btnName){
   this[btnName + "_btn"].onRollOver =function(){
      this.gotoAndPlay(2);  //va a la animacion "sobre" del boton
   };
   this[btnName + "_btn"].onRollOut = function (){
      this.gotoAndPlay ("out");  //va a la animacion "salir" del boton
   };
//aca determina a que escena dirige la cabeza lectora, modificandolo un poco sirve para
//cargar peliculas externas o enviar a cualquier keyframe
   this[btnName + "_btn"].onRelease = function (){
      if (btnName == "inicio"){
         gotoAndStop("inicio",1);
     } else if (btnName == "portafolio"){
         gotoAndStop("portafolio",1);
     }   else if (btnName == "clientes"){
         gotoAndStop("clientes",1);
     }   else if (btnName == "contacto"){
         gotoAndStop("contacto",1);
     }
   }
};

//llamada de la funcion para animacion de los botones
animaBtn("inicio");
animaBtn("portafolio");
animaBtn("clientes");
animaBtn("contacto");

aunque personalmente no me gusto como quedo estructurado la parte del onRelease, asi que si alguien tiene una mejor idea para limpiar el codigo sera bienvenida, muchas gracias a J por la ayuda, cabe anotar que esa funcioncita debe servir para cualquier menu, como para tutorial ^^

Por Finvara

807 de clabLevel



 

EL reino de los duendes...

firefox

 

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