//한글 워드랩 메쏘드, rts는 초기값 ""이나 undefined으로 시작
//TextField는 single line이어야 한다.
//** 약간의 오차가 있을 수 있다.
//TextField에는 setNewTextField가 설정되어 있어야 정상작동된다.(setTextField X)
function returnString(st:TextField, limit:Number, rts:String):String {
st.autoSize = true;
var wid:Number = st._width;
//trace("width : " + wid);
var str:String = st.text;
var rtStr:String = rts == undefined ? "" : rts;
//문장 길이가 제한보다 길면 잘라냄
if (wid > limit) {
var len:Number = str.length;
var newLen:Number = Math.floor(len * (limit / wid));
var cutLen:Number = len - newLen;
//잘라낸 앞/뒤 문장
var nstr:String = str.substr(0, newLen);
var tstr:String = str.substr(-cutLen, cutLen);
//trace("before - " + [nstr, tstr]);
//앞문장의 끝이나, 뒷문장의 처음이 공백이 아니면 앞문장의 마지막
//공백까지 다시 잘라냄
if (tstr.charAt(0) != " " && nstr.charAt(newLen - 1) != " ") {
var arr:Array = nstr.split(" ");
//공백이 없으면 그냥 자른 상태로 패스
if (arr.length == 1) {
} else {
tstr = arr.pop() + tstr;
nstr = arr.join(" ");
//trace("after - " + [nstr, tstr]);
}
//줄의 처음 공백 제거
} else if (tstr.charAt(0) == " ") {
tstr = tstr.slice(1);
//줄의 마지막 공백 제거
} else if (nstr.charAt(newLen - 1) == " ") {
nstr = nstr.slice(0, newLen - 1);
}
rtStr += nstr + "\n";
st.text = tstr;
//뒷문장을 다시 처리
return arguments.callee(st, limit, rtStr);
} else {
return rtStr + str;
}
}