Flash/AS2.0
한글 워드랩 메쏘드 //2007/03/10 17:49
괴수가면
2012. 6. 5. 12:49
//한글 워드랩 메쏘드, 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; } }