본문 바로가기

Actionscript3.0

[AS3] TextField 에 한정된 라인에만 글짜 넣기

외부 데이터를 불러 와서 TextField 에 넣어 줄때, 외부 데이터 문자 길이를 UI 에 맞게 잘러서 나타내는 경우가 있습니다. 기본적으로 String 클래스에서 제공하는 substr 등을 이용하여 문자열을 보기 좋게 자르는데요. 여기서 소개 하는 방법은 substr 과 TextField 의 getLineOffset를 이용하여 한정된 라인에만 글짜를 출력 하는 방법 입니다.

var field:TextField = new TextField();
field.width = 250;
field.wordWrap = true;
field.text = "안녕하세요.이것은 테스트 입니다.안녕하세요.이것은 테스트 입니다.안녕하세요.이것은 테스트 입니다.";
addChild(field);
위의 코드를 출력하면 아래와 같은 결과가 나옵니다.


위와 같이 width 값은 고정되어 있고 wordWrap = true 로 TextField 의 자동 줄바꿈이 설정 되어 있을때 getLineOffset 을 이용하여 원하는 최대 라인수 보다 넘어 갔을때 그 다음 라인의 첫번째 문자 인덱스 값을 가져온 뒤에 그 인덱스의 -2 만큼 String 값을 잘라 버리는 방식 입니다. getLineOffset 의 설명은 아래와 같습니다. 

var field:TextField = new TextField();
field.width = 250;
field.wordWrap = true;
field.text = "안녕하세요.이것은 테스트 입니다.안녕하세요.이것은 테스트 입니다.안녕하세요.이것은 테스트 입니다.";
cutNumLines(field,2);
addChild(field);
function cutNumLines( $field:TextField,$maxLen:int ):void{
	if($field.numLines-1 < $maxLen) return;
	
	var idx:int = $field.getLineOffset($maxLen);
	$field.text = $field.text.substr(0,idx-2)+"..";
}

getLineOffset(lineIndex:int):int
lineIndex 매개 변수로 지정된 행에 있는 첫 문자의 문자 인덱스를 반환합니다.


위의 함수를 실행한 후의 결과는 다음과 같습니다.



'Actionscript3.0' 카테고리의 다른 글

AS3 vs Javascript Performance Test  (0) 2010.01.14
Avoid ints in Actionscript  (10) 2009.11.14
Factory Pattern (AS3)  (0) 2009.10.25