Comunidad de diseño web y desarrollo en internet online

Ayuda con Bucle y TextField

Citar            
MensajeEscrito el 07 Feb 2010 04:07 pm
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
var format:TextFormat;
//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);
format= new TextFormat();
format.font=fuente.fontName;
format.size=14;
format.color=0xFFFFFF;
format.letterSpacing=0;
cajaTexto.setTextFormat(format);
cajaTexto.embedFonts=true;
}

Por chy_enrique

3 de clabLevel



 

Madrid

safari
Citar            
MensajeEscrito el 07 Feb 2010 06:13 pm
como le estas indicando que no tengan ninguna alineacion dotales de un width y un height

Código ActionScript :

cajaTexto.width = 70;
cajaTexto.height = 20;
cajaTexto.x = (cajaTexto.width + 10) * i;


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 07 Feb 2010 10:18 pm
Hola jn_Flash, Muchas gracias por responder, pero sigo teniendo el mismo problema, si por ejemplo a un TextField le paso un string del array "COCODRILO" se me corta la palabra, y aunque solo se me cortara, me sigue sin respetar los espacios. A lo mejor soy yo que algo estoy haciendo mal.

Dejo otro ejemplo más simplificado.

//VARIABLES GENERALES
var cajaTexto:TextField;
var nombresBotones:Array= new Array();
nombresBotones=["CASA","CHOCOLATE","COCODRILO","PERRO"];
var i:uint;
//BUCLE
for (i=0; i<nombresBotones.length; i++) {
cajaTexto=new TextField();
addChild(cajaTexto);
cajaTexto.width=70;
cajaTexto.height=20;
cajaTexto.text=nombresBotones[i];
cajaTexto.x=(cajaTexto.width+10)*i;
}

Gracias otra vez jn_Flash!

Por chy_enrique

3 de clabLevel



 

Madrid

safari
Citar            
MensajeEscrito el 07 Feb 2010 10:51 pm
prueba actiavando el borde a la caja de texto , para comprobar si esta respetando las posiciones.

Código ActionScript :

//VARIABLES GENERALES
var cajaTexto:TextField;
var nombresBotones:Array= new Array();
nombresBotones = ["CASA","CHOCOLATE","COCODRILO","PERRO"];
var i:uint;
//BUCLE
for (i=0; i<nombresBotones.length; i++)
{
   cajaTexto=new TextField();
   cajaTexto.border = true;
   cajaTexto.borderColor = 0xff0000;
   cajaTexto.text = nombresBotones[i];
   cajaTexto.autoSize = TextFieldAutoSize.NONE;
   cajaTexto.height = 20;
   cajaTexto.x = (cajaTexto.width + 10) * i;
   addChild(cajaTexto);
   
}


Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

chrome
Citar            
MensajeEscrito el 07 Feb 2010 11:05 pm
Hola otra vez Jonathan, vale vamos avanzando gracias. Pero lo que necesito saber, que seguramente no me he explicado bien es esto, te paso un enlace, esta página por ejemplo: http://enriquerojo.es/rangoon/
En la seccion"Showroom" hay una botonera "textil", "bolsos", "accesorios", "complementos", como puedo mantener esos espacios? si lo justico a la izquierda o al centro, o a la derecha, los espacios entre botones van a ser diferentes... entiendes lo te quiero decir?

En mi ejemplo por ejemplo, me mantiene los espacios pero al ser palabras con más o menos letras, los espacios no son los mismos.

Oye mil gracias por tu tiempo, un saludo desde Madrid!

Por chy_enrique

3 de clabLevel



 

Madrid

safari
Citar            
MensajeEscrito el 10 Feb 2010 12:48 am
nadie? jooo

Por chy_enrique

3 de clabLevel



 

Madrid

safari
Citar            
MensajeEscrito el 10 Feb 2010 01:55 am
siento no haverte respondido pero ya regrese a la escuela fuck.., ahorita lo que se me ocurre es que hagas algo asi:

Código ActionScript :

var spacing:int = 5;
var labels:Array = ["CASA","CHOCOLATE","COCODRILO","PERRO"];
var texts:Array = [];

for (var i:uint=0; i<labels.length; ++i)
{
   var t:TextField = new TextField();
   t.text = labels[i];
   t.autoSize = TextFieldAutoSize.NONE;
   t.x = t.width * i;
   addChild(t);
   texts.push(t);
}

for (i=0; i<texts.length; ++i)
{
   if (i == 0)
   {
      texts[i + 1].x = texts[0].textWidth + spacing;
   } else if (texts[i+1])
   {
      texts[i+1].x = (texts[i].x + texts[i].textWidth) + spacing;
   } else
   {
      return;
      break;
   }
}


pd. fuck postie con IE

Jonathan

Por maneuver

243 de clabLevel



Genero:Masculino  

Mexico City

msie8
Citar            
MensajeEscrito el 10 Feb 2010 04:07 pm
Hola!!

Perdon por la intromicion pero yo creo que si seria mejor auto ajustar el texto, uso un poco de tu codigo jn_Flash :)

Pongo el autosize en "left" pero ps se puede cambiar al antojo, asi el tamaño del campo depende de la cantidad de texto y entonces los acomodas en base a su width.

Código ActionScript :

var spacing:int = 5;
var labels:Array = ["CASA","CHOCOLATE","COCODRILO","PERRO"]; 
var texts:Array = []; 
 
for (var i:uint=0; i<labels.length; ++i) 
{ 
   var t:TextField = new TextField(); 
   t.autoSize = TextFieldAutoSize.LEFT; 
   t.text = labels[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 texts
   t.x = i==0? 0:texts[texts.length-1].x+texts[texts.length-1].width+spacing;
   addChild(t); 
   texts.push(t); 
} 


Y asi nos ahorramos un for y con el autosize diferente de none ya no se cortan los textos.

Nota:hay que tener cuidado en el acomodo yo sumo la coordenada "x" mas el "width" esto porq use autosize en LEFT, si fuera un CENTER tendria que ser el "width" dividido entre 2 y si fuera RIGHT no es necesario el "width"

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Feb 2010 04:11 pm
Como experiencia propia el autosize no siempre funciona como quisiera y no se me acomodan bien los textos,cuando esto me pasa uso una separacion mas grande entre textos apra evitar que se solapen o trata con el textWidth en lugar de width.

Por Angel Roberto

Claber

248 de clabLevel



 

firefox
Citar            
MensajeEscrito el 10 Feb 2010 09:39 pm
Fantástico, muchas gracias a los dos! :D
Es justo lo que necesitaba y duda resuelta. Un abrazo y gracias otra vez!

Por chy_enrique

3 de clabLevel



 

Madrid

safari

 

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