Cita:
Iniciado por ceaped Hola mortiprogramador.
Tu lo hiciste con componente "Button", pero yo lo deseo hacer sin componentes, yo deseo diseñar mi propio botón y instanciarlo digamos 20 veces de la biblioteca, osea hacer tu mismo proceso pero sin componente.
Ya hice tu tutorial y no logro que me de con un botón normal.
Gracias por tu ayuda
Hola
Bueno, pues disculpa, no te había entendido bien
En efecto, mi ejemplo va con botones de la librería, para que funcione
con botones propios (y en tu caso que son instancias de una clase (boton_0))
entonces basta con lo siguiente:
archivo test.fla
0. Entrar a mc_0, luego entrar a btn_0 y agregar un campo text sobre el botón (que simulara el label del boton común) y le damos de nombre de instancia label
Listo, al hacer esto, los demás botones heredaran de esta su madre!
Hasta aquí todo ok, si compilamos en este momento
nos dira que estamos entrando a una propiedad label que no puede ser
accedida, porque? pues porque en este momento tu hiciste movieclips
personalizados, y le diste que sean de tipo Button, pero pues no tienes
la propiedad label, solución? ponlos de tipo movieclip ( a todos los btn_n, pues este proceso no lo heredan cuando cambias el tipo en el panel de propiedades)
Ahora necesitamos modificar un poco el archivo as, poniendole .text a todos los labels que agregamos a cada botón y agregando algo que comento al final
archivo test.as
Código actionscript:
Ver original//Seteo de objetos
// txt_0.text = "HOLA"; //false, porque? porque esta DENTRO de mc_0
mc_0.txt_0.text="txt MC";//true
txt_1.text="txt 1";
mc_0.btn_0.label.text="btn MC";
btn_1.label.text="Boton 1";
btn_2.label.text="Boton 2";
btn_3.label.text="Boton 3";
mc_0.btn_0.buttonMode = true;
mc_0.btn_0.mouseChildren = false;
//Agregar listeners a botones
mc_0.btn_0.addEventListener(MouseEvent.CLICK, cualdetodos);
btn_1.addEventListener(MouseEvent.CLICK, cualdetodos);
btn_2.addEventListener(MouseEvent.CLICK, cualdetodos);
btn_3.addEventListener(MouseEvent.CLICK, cualdetodos);
function cualdetodos(e:MouseEvent):void {
//e nos traera información interesante sobre el botón presionado, por ej
//se puede usar también target, pero este suele devolver el destinatario y no el remitente
//ej: target txt_0 currentTarget btn_0
trace(e.currentTarget.label);
if (e.currentTarget.label.text=='btn MC') {
mc_0.txt_0.text="Somos parientes";
} else {
txt_1.text = "Hoy soy pariente de " + (e.currentTarget.label.text);
}
}
Notese estas 2 líneas
Código actionscript:
Ver originalmc_0.btn_0.buttonMode = true;
mc_0.btn_0.mouseChildren = false;
que hace esto? (especificamente solo con el botón del mc_0 para que se note que no esta habilitado en los otros botones)
la primera propiedad hace que salga el "indice acusador con la mano correspondiente" sobre el movieclip donde estamos ubicados
la segunda hace que los objetos que sean hijos del movieclip
también hereden al indice acusador
si pusieran esto
Código actionscript:
Ver originalmc_0.btn_0.buttonMode = true;
mc_0.btn_0.mouseChildren = true;
el indice acusador solo saldria por partes del botón donde
no lo este cubriendo el campo de texto
Pruebas y debe funcionar
Te envío los archivos sin embargo a tu mail
saludos