[Flex4 - Spark] Label 의 TextWidth 얻는 방법
Posted 2010. 11. 30. 08:00Spark Component를 사용할 때, 가장 불편한것 중 하나가
Label의 Text Width를 알 수가 없는 것이다. (어딘가 방법은 있지 않을까.. 생각한다...흠)
기존의 mx Component의 Label은 label.textWidth란 속성을,
Textfield는 textField.textWidth 를 하면 쉽게 Text의 글자 width를 알 수 있었다.
하지만, Spark 의 Label에는 textWidth를 가져오는 속성은 없고,
Label에 text가 업데이트가 되는 시점 이후에나 Label의 width를 알 수 있었다...
(그 전까지는 Label의 width는 0으로 찍힌다...createChildren이 된 이후에도...;; )
Label의 Text Width를 알 수 있는 방법이 2가지가 있는데,
1. Label.measureText()를 이용하는 방법 (참고 URL에서 알게 된 방법)
var label:Label = new Label(); label.regenerateStyleCache( false ); var textMetrics:TextLineMetrics = label.measureText( name ); var textWidth:int = textMetrics.width;
2. FlexEvent.UPDATE_COMPLETE 의 리스너를 걸어 text가 업데이트 되고 난 뒤에 관련 작업을 하는 것이다.
label.addEventListener(FlexEvent.UPDATE_COMPLETE, updateCompleteHandler); private function updateCompleteHandler(event:FlexEvent):void{ trace(label.width); }
이렇게 해서 Label의 text width를 알 수 있었다.
위의 1번 방법은 Label에 style을 먹였을때는, 정상적으로 width값이 아닌, style이 먹지 않은 width 값이 나왔다. (이유는 좀 더 확인을 해봐야 할 것 같다.)
그래서 현재는 위 2번 방법을 사용하고 있다.
혹시 이 방법 보다 좋은 방법이 있다면, 답글 부탁드립니다. __
※ 참고
http://workflowflash.com/12424/tip-calculate-properties-such-as-position-and-measurements-for-flex-spark-label-component-2.php
'개발 > Adobe Flash Platform' 카테고리의 다른 글
테스트 주도 개발 (TDD) - AsUnit, FlexUnit (11) | 2009.11.30 |
---|---|
Best Tween Engine ? (AS3) (6) | 2009.01.23 |
Flash + Voice 연동 (2) | 2008.11.06 |
FLASH, 제 친구들을 소개합니다. (18) | 2008.09.13 |
[PV3D_2.0]Papervision3D 2.0 Camera3D에 관해 (Camera3D, FreeCamera3D) (10) | 2008.08.13 |
|
- Filed under : 개발/Adobe Flash Platform