Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/04/2010, 02:50
dualklip
 
Fecha de Ingreso: octubre-2007
Ubicación: Madrid, España
Mensajes: 221
Antigüedad: 16 años, 6 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.