Ayuda con bucle y TextField en AS3
Hola muy buenas, tengo una duda en Actionscript muy basica, pero me estoy liando y no la saco...
Quiero pintar una botonera con un bucle for, creo una caja de texto dinámica para que vaya pintando los botones, estos se alimentaron de un array que he creado antes. La pregunta es:
Como puedo hacer que me coloque las cajas de texto manteniendo un orden en X o en Y? porque me hace lo que quiere, si esto lo hago por ejemplo con Sprites no me ocurre esto, no se si me explicado bien?
A ver si alguien me resuelve la duda. Mil gracias :D
Dejo un ejemplo
//////////////////////////////////////////////////////////////////////////////////////////////
//Array nombres botones
var nombresBotones:Array=new Array();
nombresBotones=["estudio","galeria","cuidados","artistas","contacto","xhtmlversion"];
/////////////////////////////////////////////////////////////////////////
var fuente:FuenteLubalin=new FuenteLubalin();
for (var i:uint=0; i<nombresBotones.length; i++) {
var cajaTexto:TextField=new TextField ();
cajaTexto.autoSize=TextFieldAutoSize.NONE;
cajaTexto.type=TextFieldType.DYNAMIC;
cajaTexto.alwaysShowSelection=true;
cajaTexto.text=nombresBotones[i];
cajaTexto.antiAliasType=AntiAliasType.ADVANCED;
cajaTexto.selectable=false;
cajaTexto.x = (cajaTexto.width+10)*i;
cajaTexto.y=40;
addChild(cajaTexto);
var format:TextFormat = new TextFormat();
format.font=fuente.fontName;
format.size=14;
format.color=0xFFFFFF;
format.letterSpacing=0;
cajaTexto.setTextFormat(format);
cajaTexto.embedFonts=true;
}
Usuario desconocido
Me acabo de dar cuenta de que el TextFormat tendría que sacarlo del bucle, las prisas.... :D
Usuario desconocido
nadie? jooo
Ochionet
Hola, una forma de trabajar sería la de hacer una clase para los botones. Seria algo parecido a lo que estas haciendo con los sprites, pero con un objeto creado por ti, es decir:
en la clase principal:
.....
.....
var item:Object;
for each(item in itemArray)
{
var btn:Boton = new Boton(parametros.....);
btn.y = altura*contadorY;
addChild(btn);
contadorY++;
}
...
...
en la clase Boton:
....
...
public function Boton(parametros.....)
{
...
...
myFont= new Tipografia();
formato = new TextFormat();
formato.color = 0xffffff;
formato.size = 15;
formato.leading = 2;
formato.font = myFont.fontName;
cajaTexto = new TextField();
cajaTexto.defaultTextFormat = formato;
cajaTexto.text = ...... ;
cajaTexto.embedFonts = true;
cajaTexto.selectable = false;
cajaTexto.type = TextFieldType.DYNAMIC;
cajaTexto.autoSize = TextFieldAutoSize.LEFT;
cajaTexto.antiAliasType = AntiAliasType.ADVANCED;
addChild(cajaTexto);
ponerListener();
}
...
...
Espero que te sirva, basicamente lo que haces es sacar el código del boton a otra clase, y desde la principal la gestionas.
Saludos,
Usuario desconocido
Hola Ochionet! gracias por responder, en realidad lo tengo repartido todo en clases. Ya me han resuelto la duda, la dejo por si a alguien le sirve en el futuro. Un saludo colega y gracias otra vez!
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var espacio:int=5;
var arrayUno:Array=["CASA","CHOCOLATE","COCODRILO","PERRO"];
var arrayDos:Array=[];
for (var i:uint=0; i<arrayUno.length; ++i) {
var cajaTexto:TextField = new TextField();
cajaTexto.autoSize=TextFieldAutoSize.LEFT;
cajaTexto.text=arrayUno[i];
//Aqui los acomodo, si i vale es cero es el primer texto y le doy un x=0 (o la posicion inicial que elijas)
// si no vale 0 lo que hago es leer el ancho del texto anterior que como fue el ultimo en agregarse es el ultimo del arreglo arrayDos
//El operador condicional es un operador ternario, lo que significa que se aplica a tres operandos. El operador condicional es un método abreviado para aplicar la sentencia condicional if..else.
cajaTexto.x=i==0?0:arrayDos[arrayDos.length-1].x+arrayDos[arrayDos.length-1].width+espacio;
addChild(cajaTexto);
arrayDos.push(cajaTexto);
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////