Comunidad de diseño web y desarrollo en internet online

como separar varias lineas en diferentes variables

Citar            
MensajeEscrito el 14 Feb 2012 12:08 am
si tengo un campo de introduccion de texto.
hay alguna manera de detectar cuando acaba y comienza una linea?

quiero separarlas para ponerlas en variables diferentes y asi utilizarlos en una funcion que escribe letra a letra. el problema es que la funcion falla cuando son dos lineas diferentes y lo que hace es que las une.

pensaba algo como texto.split() para poner convertir cada linea en un elemento de un array, pero no se que poner dentro del split() para que las separe por lineas.

Por kirec1

12 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Feb 2012 05:38 am
hay varias formas de hacerlo dependiendo del contenedor de la variables...es decir...esta en una variable String o es en el parametro "text" de la clase TextField.

si esta en la clase TextField

Código ActionScript :

import flash.text.TextField;

var TextoPrueba: String= "Prueba de linea uno\nPrueba de linea dos\nPrueba de linea tres";

var Texto: TextField= new TextField();
Texto.multiline= true;
Texto.text= TextoPrueba;
addChild(Texto);

trace(Texto.numLines);
trace(Texto.getLineText(0));
trace(Texto.getLineText(1));
trace(Texto.getLineText(2));

ojo....en el TextField tienes que tener el parametro "multiline" en true

y si lo tienes en una variable "String"

Código ActionScript :

//Variable contenedora de Texto con varias lineas
var Texto: String= "Prueba de linea uno\nPrueba de linea dos\nPrueba de linea tres";
//Variable contenedora de las lineas
var Lineas: Array= [];
//Variables que indican el principio y final dentro de la cadena de la linea
var Inicio: int= 0;
var Final: int= 0;
//Clase para realizar busquedas y remplazar texto en las cadenas
var Patron: RegExp= /\n/g;
//bucle de separacion
do
{
   Patron.exec(Texto);
   Final= Patron.lastIndex;
   if (Final>0)
      //Final-1 para no coger el caracter de nueva linea
      Lineas.push(Texto.substring(Inicio,Final-1));
   else
      Lineas.push(Texto.substr(Inicio,Texto.length));
   Inicio= Final;
}
while (Final>0)

trace(Lineas);


la clase RegExp es una clase potente, que cuesta un poco coger al principio pero una vez aprendido lo usaras te lo aseguro

espero que te haya servido y aclarado la duda

Saludos

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Feb 2012 07:55 am
retifico en la parte de String...hay una forma mas facil todavia y mucho mas directa

Código ActionScript :

var Texto: String= "Prueba de linea uno\nPrueba de linea dos\nPrueba de linea tres";
trace(Texto.split(/\n/));


me cegue con el RegExp..xd...pero sigue siendo un metodo vadilo tambien

saludos

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Feb 2012 01:50 pm
bien, creo que con la primera parte que propusiste puedo hacerlo, pero hay un problema:

sale un error de que no se puede cargar la clase flash.text.textfield, aunque me interesa mas la parte de:

numLines y getLineText() con esto si puedo hacer una funcion que guarde en diferentes variables respecto al numero de lineas, pero cuando hago esto:

trace(Texto.numLines);
trace(Texto.getLineText(0));
trace(Texto.getLineText(1));
trace(Texto.getLineText(2));

todas salen undefined.
numLines y getLineText() si me son utiles y no se como utilizarlas, tampoco sale en la ayuda de flash.

Por kirec1

12 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Feb 2012 07:03 pm
me tienes que decir como trabajas para ver donde tienes el problema...es decir...si trabajas en CS4,CS5, como sea....y si es en AS2 o AS3, o lo que sea...xd

saludos

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Feb 2012 07:30 pm
utilizo macromedia flash profesional en action script 3

Por kirec1

12 de clabLevel



 

chrome
Citar            
MensajeEscrito el 15 Feb 2012 08:32 pm
yo utilizo Adobe Flash Profesional CS5.

y no puedes importar la clase del objeto de visualizacion del Texto?

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 16 Feb 2012 02:06 pm
me equivoque arriba, no estoy usando actionscript 3, sino, actionscript 2.

tambien me di cuenta que si elimino esta parte:

var Texto: TextField= new TextField();

no sale el error pero aun sigue sin funcionar

Por kirec1

12 de clabLevel



 

chrome
Citar            
MensajeEscrito el 16 Feb 2012 06:45 pm
no funciona el "numLines" y getLineText" en AS2.

el metodo mas rapido es

Código ActionScript :

var TextoPrueba: String= "Prueba de linea uno\nPrueba de linea dos\nPrueba de linea tres";
var TextoBuscar: String= "\n";

trace(TextoPrueba.split(TextoBuscar));

y RegExp no esta como clase predeterminada pero puedes cogerlo de aquí

espero haberte ayudado y aclarado la duda

saludos

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 17 Feb 2012 11:15 pm
ya consegui algo parecido.
lo pongo aqui por si le sirve a alguien.


Código ActionScript :

function separar (texto:String){
   var arrayDestino:Array=new Array();
   var lugarArray:Number=0;
   while(texto.indexOf("\n") != -1){
      arrayDestino[lugarArray]= texto.slice(0,texto.indexOf("\n"));
      texto= texto.slice(texto.indexOf("\n")+1,texto.length);
      lugarArray++;
   }
   arrayDestino[lugarArray]= texto;
   return arrayDestino;
}


la funcion devuelve el texto introducido en forma de array con las lineas ya separadas.

Por kirec1

12 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Feb 2012 03:40 am
con lo que te he puesto anteriormente es mas directo...pero creo que no lo has visto...te lo pondre de otra forma

Código ActionScript :

var TextoPrueba: String= "Prueba de linea uno\nPrueba de linea dos\nPrueba de linea tres";

var Tabla: Array= TextoPrueba.split(String("\n"));

trace("Linea 1 --> "+Tabla[0]);
trace("Linea 2 --> "+Tabla[1]);
trace("Linea 3 --> "+Tabla[2]);

Por Yonomimi

76 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Feb 2012 11:05 pm
antes lo hice pero no me funciono, y ahora si :?
gracias por tu ayuda

Por kirec1

12 de clabLevel



 

chrome

 

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