среда, сентября 12, 2007

AutoSize для TextField

Тут был поднят вопрос об этом свойстве.

В кратце по этой теме (возможно будут коррекции):

Например, при установке autoSize="right", при увеличении текста поле будет увеличивать размер влево, а правая сторона оставаться на месте.
Если в тексте присутствует перенос на другую строку "\n" или для htmlText "
" или " [p][/p]", размер поля будет увеличиваться вниз.
Всё это никак не сказывается на выравнивание самого текста в поле.

Но стоит только установить txt.wordWrap=true; как AutoSize потеряет свою силу по горизонтали. Поле будет оставаться в своих горизонтальных размерах, и расти вниз. Может тебя ввел в заблуждение этот параметр?

Предполагаю, что текстформат никак не должен пересекаться с autoSize, т.к. отвечает за формат разметки текста в самом поле.

Ширину можно спокойно менять параметром _width. Но тут есть тонкость. autoSize будет всё равно сохранять ширину текста неизменной. При установке _width, блок текста буде смещаться по горизонтали соответственно заданной ширине, а ширина будет сохранять свое значение неизменным.

Кроме того, если добавляешь/изменяешь текст в поле, его размер, _width/_height, обновится только в следующем фрейме. Поэтому если нужен размер текста сразу после изменений текста, используй textWidth/textHeight - они обновятся сразу.

Итак, если тебе нужно поле с wordwrap-ом, меняй его размер _width, а текст выравнивай форматированием (TextFormat). autoSize будет тебе обеспечивать увеличение по вертикали.
В ином случае, autoSize сам будет менять размеры поля в нужном тебе направлении, но без авто-переноса текста.

2 комментария:

Анонимный комментирует...

где то читал. что ошибочные значения ширины и высоты до первого вызова или следующего кадра выдаются неверные.

что-то типа доллжно помочь

var sum:Number=txt._height+txt.textHeight+txt._width+txt.textWidth;

Unknown комментирует...

А что это даст?