Comunidad de diseño web y desarrollo en internet online

Botones dinámicos en AS3

Citar            
MensajeEscrito el 30 Abr 2009 09:15 am
Hola a todos, no se si el título es correcto o no, pero seguro que despertará la curiosidad de los que estamos aprendiendo.

Hasta ahora en flash siempre utilizaba un metodo muy sencillo pero para mi efectivo a la hora de crear botones de menús, botones en mc, etc...

El resultado era esté:
link resultado

Lo que hago es un mc que dentro tiene un boton falso, etiquetas de in out y activo, una zona sensible con la programación y luego le doy el texto desde el mc, luego duplico el mc, ya sea dinámicamente o duplicándolo en el escenario manualmente y dándole la programación a cada mc, al final sólo tengo un mc, si modifico su interior se modifican todos.








En la zona activa del boton le doy esta programación:

Código :

on(rollOver){
gotoAndPlay('in')
}
on(rollOut){
gotoAndPlay('out')
}
on(release){
_root.boton_activo.gotoAndPlay('out')
_root.boton_activo=eval(this)
_root.boton_activo.gotoAndStop('activo')
}

Con esta programación tan simple tenia solucionados muchos dolores de cabeza, y la he usado para mil cosas, galerias, duplicados, menus, etc...

Ahora me gustaría trasladar está programación a AS3 y me está mareando un poco el tema, lo que me gustaría es tener alguna clase parecida, para poder hacer un mc con una animación dentro, etiquetas, etc...

El primer problema con el que me encuentro es el siguiente, he intentado hacer primero una función en la línea de tiempo sólo para un boton, luego en teoria haría que esa función fuera para todos, pero bueno, ya no me va ni la primera

le he puesto este código en el primer frame

Código :

this.boton_mc.txt_boton.text='uno';
this.boton_mc.boton.addEventListener(MouseEvent.MOUSE_OVER,over);
this.boton_mc.boton.addEventListener(MouseEvent.MOUSE_OUT,out);
this.boton_mc.boton.addEventListener(MouseEvent.CLICK,pulsado);

function over(e:MouseEvent):void{
boton_mc.gotoAndPlay('in')
//Texto_txt.text = ("Has hecho over");
}

function out(e:MouseEvent):void{
boton_mc.gotoAndPlay('out')
//Texto_txt.text = ("Has hecho out");
}
function pulsado(e:MouseEvent):void{
//Texto_txt.text = ("Has pulsado");
boton_mc.gotoAndStop('activo')
boton_mc.boton.enabled=false;
trace("Has pulsado");
}



Sin pulsar siquiera ya no funciona, en el momento que hace el out, como la linea de tiempo sigue avanzando y luego vuelve al primer frame es como si la zona sensible hubiera desaparecido, ejemplo :

link resultado cutre

y eso que todavía no he intentado hacer el eval para que se guarde en una variable su ruta y luego se desmonte o se monte según a que boton cliques.

ALguien puede ayudarme a hacer una clase reutilizable para este tipo de código.

Aqui les dejo el fla por si sirve de algo

descargar fla

Mil gracias

Por dazao

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Abr 2009 10:46 am
Recomendación 1: si vas a usar el evento over/out y el botón tiene una animación, considera tener un área constante (puede ser un fondo rellenado con un color de alpha 0) ocupada, sino de pronto el Mouse se queda fuera y disparas el out
Recomendación 2: Usa event.target para apuntar a quien generó el evento de Mouse

No me da para escribirte la clase, pero te veo bien encaminado, así que ahí te dejo las pistas

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Abr 2009 12:01 pm
gracias,

no hay forma de que no se dispare el out, antes no pasaba en la programación de un boton.

grrrr

Por dazao

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Mar 2011 06:48 am
Hola, presisamente estoy escribiendo una aplicacion en flash, la estoy escribiendo en AS3
simplemente por que el código correo mucho más deprisa, de cualquier forma
As2 es un lenguaje orientado a objetos, y veo que por tu estilo de programar utilizas eventos
de botón, práctica nada aconsejable desde AS2, de hecho en AS3 ya no puedes hacerlo.

on(rollOver){
gotoAndPlay('in')
}
ya no es una práctica de programación aceptada.

Saludos.

Por rickzac

96 de clabLevel

1 tutorial

Genero:Masculino  

msie8

 

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