//한글 워드랩 메쏘드, 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;
	}
}


'Flash > AS2.0' 카테고리의 다른 글

Adapter  (0) 2012.06.05
SimpleButtonHandler //2007/03/18 13:22  (0) 2012.06.05
loadBitmap() //2007/03/01 22:52  (0) 2012.06.05
Stage //2007/02/12 18:37  (0) 2012.06.05
AS2와 AS3간의 LocalConnection  (0) 2012.06.05