flash - word alignment in actionscript -
i have sentence string.
internal var sentence:string = "lorem ipsum dummy text of printing , typesetting industry."; then separated every word , stored in array named wordarray , apply text field , added stage using addchild.
for(var i:uint =0;x i< sentence.split(" ").length; i++){ wordarray.push(sentence.split(" ")[i]); txt = new textfield(); addchild(txt); txt.text = wordarray[i]; } alignement
if(i==0) { txt.x = wordarray[i].x;} else{ txt.x = wordarray[i -1].width + wordarray[i-1].x+2}; this align first line perfectly. want multiline particular width textfield.(if word exceeds boundary limit has come next line textfield)
?
firstly, i'll fix mistakes.
internal var sentence:string var sentence:string the default access modifier internal. don't need write internal here. there no string class/object in as3. strings use string.
for (var i:uint = 0;x i< sentence.split(" ").length; i++){ what x before i <? remove it.
in code sentence splits multiple times. avoid split sentence once.
var splittedsentence:array = sentence.split(" "); (var i: uint = 0; < splittedsentence.length; i++) next.
wordarray.push(sentence.split(" ")[i]); txt = new textfield(); addchild(txt); txt.text = wordarray[i]; you don't need store substring in wordarray. should store textfields.
txt = new textfield(); addchild(txt); txt.text = sentence.split(" ")[i]; wordarray.push(txt); define variable line stores current line of text (from 0).
var line:int = 0; set autosize property textfield:
txt.autosize = textfieldautosize.left; so width , height of textfield resized after text added textfield.
if (txt.x + txt.width > stage.stagewidth) { txt.x = 0; line++; } 
if current textfield out of bounds, moved next line.
finally, set y property of textfield:
txt.y = txt.height * line; full code:
import flash.text.textfield; import flash.text.textfieldautosize; var sentence: string = "lorem ipsum dummy text of printing , typesetting industry."; var wordarray: array = []; var txt: textfield; var line:int = 0; var splittedsentence:array = sentence.split(" "); (var i: uint = 0; < splittedsentence.length; i++) { txt = new textfield(); txt.autosize = textfieldautosize.left; addchild(txt); txt.text = splittedsentence[i]; wordarray.push(txt); if (i == 0) txt.x = wordarray[i].x; else txt.x = wordarray[i - 1].width + wordarray[i - 1].x + 2; if (txt.x + txt.width > stage.stagewidth) { txt.x = 0; line++; } txt.y = txt.height * line; } the result:

Comments
Post a Comment