http://ufx.kr/blog/203
하나의 다이나믹 텍스트 필드에서 두개 이상의 포맷을 지정하고 싶은 경우 htmlText 설정하여 태그로 설정하는 방법 이외에 setTextFormat() 메서드를 이용하는 방법이 있습니다.
htmlText 에서 지원하지 않는 속성으로 표현되어야 하거나, htmlText 속성을 줄 수 없는 경우에 이 방법을 사용하면 됩니다. 기본적으로 htmlText 보다는 TextFormat 이 좀 더 강력하다고 할 수 있습니다.
컴파일한 결과는 아래와 같습니다.
세계의끝과 플래시 원더랜드
그런데 TextFormat 을 사용할 때 몇가지 주의할 점이 있습니다.
- 텍스트필드에 스타일 시트(css) 가 적용된 경우 setTextFormat() 메서드는 무시됩니다.
- endIndex 부분의 숫자에 주의해야 합니다.
F1 레퍼런스에 있는 메서드 정의가 아래와 같은데요.
public function setTextFormat(format:TextFormat, beginIndex:int = -1, endIndex:int = -1):void
여기서 endIndex 는 TextFormat 이 끝나는 index 가 아니라 끝나고 난 후 다음 TextFormat 이 오는 index 입니다.
“세계의끝과 플래시 원더랜드” 일 경우 “세”의 index 가 0 이고 띄어쓰기 공백 문자 포함해서 “플” 의 index 는 6입니다. 그러면 “시” 문자의 index 가 8 이 되는데요. _tf.setTextFormat( format, 6, 8 ); 으로 하면 우리가 원하는 결과가 아니라는 것 입니다. 즉, TextFormat 이 끝나고 난 후의 그 다음 index 인 9를 입력해야 합니다. - AS2.0에서도 사용할 수가 있습니다.
그런데 AS2.0에서 사용할 경우 setTextFormat() 메서드 정의에서 파라미터의 순서가 다릅니다.
public setTextFormat([beginIndex:Number], [endIndex:Number], textFormat:TextFormat) : Void
어이없게도 TextFormat 객체가 들어가야 할 위치가 첫번째가 아니라 마지막입니다.[01]