Comunidad de diseño web y desarrollo en internet online

Obtener el nombre Boton

Citar            
MensajeEscrito el 06 Ago 2007 09:07 am
Muy buenas gente, este es mi primer post y quisiera preguntaros una duda. El tema es que tengo una matriz de botones enorme de unos 800 botones mas o menos, cada uno tiene un nombre que equivale a su posicion en esa matriz (ejemplo: boton_15_4, boton_7_11) y y claro quiero ejecutar un metodo cuando se haga click en un boton, la idea que yo tenia era que cada boton tubiera dentro de si un codigo que obtuviese su nombre al hacer click en el y se lo pasara a un metodo para que este una vez con el nombre del boton que se habia pulsado realizase una acción. El problema es que no se como puedo hacer para obtener el nombre de si mismo. Os agradeceria mucho vuestra ayuda.

Atentamente,

Guzur.

Por guzur

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ago 2007 11:55 am
Hola guzur,

Creo que la sentencia que andas buscando es esta:

Código :

this._name;


La he probado y para los MovieClip funciona perfectamente pero para los Botones no me muestra su nombre :crap: , no tengo ni idea de porque ocurre esto para un componente y para el otro no. ¿Alguien sabe la razón?

De todas formas te adjunto un ejemplo de código con el que puedes realizar un seguimiento de todos los nombres de cualquier instancia Button que se encuentre en la línea de tiempo actual, espero te sea de utilidad. (este código también lo he probado y si funciona)

Código :

for (i in this) {
    if (this[i] instanceof Button) {
    trace(this[i]._name);
    }
}

Por __-Joker-__

25 de clabLevel



Genero:Masculino  

Canarias

firefox
Citar            
MensajeEscrito el 06 Ago 2007 01:06 pm
Muchas gracias por tu respuesta, la verdad es que yo tambien lo habia probado y no funciona lo pone en blanco, por eso a ver si alguien sabe la forma de hacerlo. Un saludo y gracias.

Por guzur

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Ago 2007 02:46 pm
hola que tal guzur!!! si estas usando los botones de los componentes, puedes usar un mismo evento para todos, es decir no poner código dentro del botón sino en el fotograma que los contiene algo asi:

Código :

//primero les reigstras el evento click, ya sea con un loop, en este caso solo registrare uno

btn_5.addEventListener("click",clickBtn);

function clickBtn(evt){
trace(evt.target);
}


(si no te funciona mil disculpas, pues hace tiempo q ia no uso AS2)

saludos!!!

Por andres_santos

236 de clabLevel



 

opera
Citar            
MensajeEscrito el 07 Ago 2007 10:05 am
He probado con el componente boton y he logrado que funcione. Lo que he hecho es lo siguiente:

1. He creado un botón seleccionando el componente button desde el menú componentes (CRTRL-F7)
2. He añadido el siguiente código en el fotograma 1:

var bBotoia:mx.controls.Button;
var fTestua:mx.controls.TextInput;
function click(evento){
trace("Nombre del boton: " + evento.target);
trace("Evento: " + evento.type);
}
bBotoia.addEventListener("click", this);

3. Pulsar el botón creado.

Pero me interesaría hacer lo mismo con mis propios botones, en lugar de utilizar componentes. ¿Sabe alguien si es posible y puede darme alguna pista?
Un saludo

Por guzur

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Ago 2007 03:56 pm
Dentro de una acción de controlador de eventos on asociada a un botón, this se refiere a la línea de tiempo que contiene el botón. Dentro de una acción de controlador de eventos onClipEvent() asociada a un clip de película, this se refiere a la línea de tiempo del propio clip de película.

(lo anterior obtenido de la ayuda de flash)


Por lo tanto no puedes usar el this._name o cualquier this.algo para obtener propiedades del botón, porque en realidad estarias tomando las propiedades del clip que contiene el botón.

Entonces, te recomiendo que no uses botones, que uses movieclips (convierte tus botones a movieclips), y que programes el rollOver y rollOut de estos para que tengan funcionalidad de boton, si es que tienen alguna animación:

Usa el codigo posteado anteriormente, unicamente tienes que definir en que linea de tiempo se encuentran tus movieclips, te sugiero que metas todos los movieclips que funcionan como boton dentro de un movieclip (solo los botones):
(en el siguiente codigo se asume que todos los movieclips que funcionan como boton se encuentran dentro del movieclip llamado mcBotones y que éste movieclip está en la línea de tiempo principal . raiz):

Código :

for (Btn in _root.mcBotones) {
    if (_root.mcBotones[Btn] instanceof Button) {
       trace(Btn); // aqui se muestra el nombre del boton
       _root.mcBotones[Btn].onPress = function () {
              // aqui va el codigo que quieres que realice con el nombre, por ejemplo
              _root.ClicBtn(this._name);
       }
       _root.mcBotones[Btn].onRollOver = function () {
              this.gotoAndStop(2);
       }
       _root.mcBotones[Btn].onRollOut = function () {
              this.gotoAndStop(1);
       }
    }
}

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7
Citar            
MensajeEscrito el 08 Ago 2007 08:55 am
Muchas gracias por tu respuesta (la verdad es que es una gozada encontrar una respuesta tan clara y tan bien explicada). Un saludo a ti y a todos los demás. Nos vemos. Guzur.

Por guzur

5 de clabLevel



 

firefox

 

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