외부 데이터를 불러 와서 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)+".."; }
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 |