Comunidad de diseño web y desarrollo en internet online

Leer el nombre de una instancia simpleButton

Citar            
MensajeEscrito el 29 Ago 2008 08:35 pm
Hola Amigos.

Esta vez interesado en conocer como debo escribir el código para capturar el nombre de una instancia de un símbolo tipo botón con AS3.

La idea es que cuando realice clic sobre el boton que creé me retorne su nombre de instancia.

Les agradecería cualquier sugerencia al respecto.

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Ago 2008 08:41 pm
Intentaste con algo como esto?

Código ActionScript :

boton.addEventListener(MouseEvent.CLICK, tellMe);

function tellMe(evt:MouseEvent):void{
   
   trace("El nombre del botón presionado es " + evt.target.name);
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 29 Ago 2008 08:49 pm
Gracias amigo. A la medida.

Código :

evt.target.name

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Ago 2008 10:32 pm

Código :

function tellMe(evt:MouseEvent):void{
trace("El nombre del botón presionado es " + event.target.name);     } 


Quisiera saber como aplico la anterior función en AS3 a cualquier simbolo botón sobre el que realice click y que no fue creado con código.

Saludos.

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 29 Ago 2008 11:21 pm
Si no creaste el displayObject con código y lo tienes en la escena, es lo mismo, desde la document class o desde el timeline la función debe ser así:

Código ActionScript :

nombreDeInstancia.addEventListener(MouseEvent.CLICK, tellMe); 
 
function tellMe(evt:MouseEvent):void{ 
    
   trace("El nombre del DisplayObject presionado es " + evt.target.name); 
    
} 

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 30 Ago 2008 12:24 pm
Me explique mal.
Necesito escribir una funcion que capture el nombre de instancia de cualquier simbolo botón localizado en el escenario por medio del evento clic. Es decir una funcon genérica.

Con el proposito de aplicar algo como:

nombreInstancia.addEvenListener(MouseEvent.Click, funcion)

en donde "nombreInstancia" almacenaría el combre de la instancia de cualquir botòn capturado previamente.

El inconveniente que tengo con la funciòn que me suministraste es que solo aplica a una instancia determinada: boton.addEventListener(MouseEvent.CLICK, tellMe);.

Gracias;
Saludos.

Por charladito

26 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ago 2008 01:22 pm
Imagina que tienes un displayObject nombrado "contenedor" si el dentro tiene varios childs al darle esta instrucción:

Código ActionScript :

contenedor.addEventListener(MouseEvent.CLICK, tellMe);  
  
function tellMe(evt:MouseEvent):void{  
     
   trace("El nombre del DisplayObject presionado es " + evt.target.name);  //--El nombre de los childs presionados
   trace("El nombre del DisplayObject presionado es " + evt.currentTarget.name);  //--El nombre del contenedor
     
}  


Con target el evento se propagará y será un evento de cualquier child que este contenga, sin embargo puedes notar que con currentTarget el evento captura al DisplayObject que tiene asignado el evento.

Ahora si quisieras que cualquier objeto añadido en tu escena tenga esa función, asígnale el evento a la escena y este se propagará entre todos sus childs:

Código ActionScript :

this.stage.addEventListener(MouseEvent.CLICK, tellMe);  
  
function tellMe(evt:MouseEvent):void{  
     
   trace("El nombre del DisplayObject presionado es " + evt.target.name);  
     
}  

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Sep 2008 05:06 pm
Funciona muy bien Elchininet. Gracias.

Tengo la siguiente duda:
En el escenario principal tengo un cuadro de texto dinámco llamado "a" y un moviclip con el nombre "b".
El bjetivo es que a partir de código dentro de este movie clip modifique el campo de texto "a"
Estoy usando el siguiente código pero me genera error y ya he investigado y no encuentro solucion.

stage.getChildByName(a).text = "Hola";

Error:
1119: Acceso a una propiedad text posiblemente no definida mediante una referencia con tipo estático flash.display:DisplayObject.

Gracias. Saludos

Por charladito

26 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Sep 2008 07:02 pm
Lo que hace la siguiente instrucción (Que por cierto el nombre debe estar entre comillas):

Código ActionScript :

getChildByName("a")


Es devolverte un DisplayObject y estos son objetos estáticos, no puedes acceder a una propiedad de "text" en ellos, lo correcto es guardar el TextField en una variable de tipo TextField y después cambiarle la propiedad "text":

Código ActionScript :

var texto:TextField = getChildByName("a") as TextField;
texto.text = "Hola";

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 09 Jul 2010 05:26 pm
Excelente post!! me ayudo demaciado =) gracias.

una consulta, para alguno de esos códigos, es necesario hacer un import antes??

gracias.

Por elcoka

16 de clabLevel



 

Santiago, Chile

firefox
Citar            
MensajeEscrito el 12 Jul 2010 09:43 am
@elcoka, si estás trabajando desde el frame de la película estos códigos no necesitan de ningún import, si estás trabajando desde una clase debes importar las siguientes clases:

Código ActionScript :

import flash.text.TextField;
import flash.events.MouseEvent;

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.