Foros del Web » Creando para Internet » Flash y Actionscript »

TextField dentro de un Movieclip que hace de botón

Estas en el tema de TextField dentro de un Movieclip que hace de botón en el foro de Flash y Actionscript en Foros del Web. Hola a todos. Hacía años que no pasaba por aquí, pero recientemente he vuelto a la maravillosa profesión de programador y ya estamos rompiéndonos las ...
  #1 (permalink)  
Antiguo 20/04/2010, 02:50
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 5 meses
Puntos: 5
Pregunta TextField dentro de un Movieclip que hace de botón

Hola a todos. Hacía años que no pasaba por aquí, pero recientemente he vuelto a la maravillosa profesión de programador y ya estamos rompiéndonos las pelotas con el puñetero AS3.

Bueno os cuento mi problema:
Estoy trabajando en una peli de AS3 e inserto mediante un for varias instancias de un mismo mc que tengo en la Biblioteca. Mediante el for también aprovecho para declarar dentro del mc algunas vars que me ayudaran a rellenar el contenido.

Línea de tiempo principal
Código:
var menu:XML = new XML();
var request1:URLRequest = new URLRequest("xml/menu.xml");
var menuEsLoader:URLLoader = new URLLoader();

menuEsLoader.load(request1);

for(var a = 0; a < menu.elements("*").length(); a++){
	var btn:MovieClip = new btnPrincipal();
	btn.num = menu.registro[a].@codigo;
	btn.nombre = menu.registro[a].@nombre;
	btn.col_franja = menu.registro[a].@col_franja;
	btn.ancho = menu.registro[a].@ancho;
	btn.x = posBtns.x;
	btn.y = posBtns.y;
	btn.buttonMode = true;
	posBtns.x += Number(menu.registro[a].@ancho) + 20;
	addChild(btn);
}
Este mc crea desde su línea de tiempo interna un Shape y dos TextField, los TF se rellenan con las vars declaradas, y hasta ahí todo bien.

Línea de tiempo del mc "btnPrincipal"
Código:
var numero:TextField = new TextField();
numero.x = 4;
numero.width = 16;
numero.height = 30;
numero.multiline = true;
numero.wordWrap = true;
numero.selectable = false;
numero.text = this["num"];

var titulo:TextField = new TextField();
titulo.x = numero.x + numero.width;
titulo.width = this["ancho"];
titulo.height = 30;
titulo.multiline = true;
titulo.wordWrap = true;
titulo.selectable = false;
titulo.text = this["nombre"];

var fondo:Shape = new Shape();
fondo.graphics.beginFill(this.parent["config"].btn_nivel1, 100);
fondo.graphics.lineStyle(1, this.parent["config"].btn_nivel1, 100);
fondo.graphics.drawRect(0, 0, (numero.width+titulo.width), 30);
fondo.graphics.endFill();

function clik(MouseEvent:Event):void{
	trace(MouseEvent.target.name);
}
this.addEventListener(MouseEvent.CLICK, clik);

addChild(fondo);
addChild(numero);
addChild(titulo);
EL PROBLEMA: la opción "buttonMode" declarada en el for inicial solo funciona cuando el ratón pasa por encima del Shape pero no cuando pasa por encima de los TextField. El hecho es que la función declarada para el evento "CLICK" si funciona aunque no aparezca la manita, pero ya sabemos que para los clientes si no aparece la manita no hay botón.

Muchas gracias por la ayuda que me podáis ofrecer de antemano.
  #2 (permalink)  
Antiguo 20/04/2010, 02:58
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 5 meses
Puntos: 5
De acuerdo solucionado

¡¡¡MIRA QUE RÁPIDO!!! llevo toda la mañana buscando en el foro y por fin lo he encontrado

Cita:
Iniciado por marianocc Ver Mensaje
Efectivamente!
Además de armar el botón con un mc, este tiene que tener las siguientes propiedades seteadas

buttonMode = true;
mouseChildren = false;

la primera para convertir el MovieClip en SimpleButtom y la segunda para evitar que los elementos dentro del botón respondan a eventos del mouse.
Gracias!
Gracias marianocc

Etiquetas: movieclip, textfield
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:54.