> А то надо вот, чтобы текстфилд сам присвоил себе ширину/высоту после заполнения текстом, а потом изменить ему ширину. Пробовал читать свойства _height/_width и переприсваивать формат..
> Пока шо как-то слабо получается влиять...
А ты попробуй сначала, при создании текстфиелда задать ему нужную
ширину, а потом указать autosize = true;. Если ты хотел, чтоб твой
текстфиелд увеличивался по вертикали. Я иногда, чтоб указать ему, куда
нужно двигатся применяю к соотв. свойству NaN и вроде работает. :)
Или я, как всегда, не понял вопроса?
--
/*
Нет проблем, есть люди.
*/
> Судя по всему, autoSize жутко глючная вещь!
Например, при установке autoSize="right", при увеличении текста поле
будет увеличивать размер влево, а правая сторона оставаться на месте.
Если в тексте присутствует перенос на другую строку "\n" или для
htmlText "<br/>" или "<p></p>", размер поля будет увеличиваться вниз.
Всё это никак не сказывается на выравнивание самого текста в поле.
Но стоит только установить txt.wordWrap=true; как AutoSize потеряет
свою силу по горизонтали. Поле будет оставаться в своих горизонтальных
размерах, и расти вниз. Может тебя ввел в заблуждение этот параметр?
> Особенно в смеси с СетФорматом.
Предполагаю, что текстформат никак не должен пересекаться с autoSize,
т.к. отвечает за формат разметки текста в самом поле.
> А то надо вот, чтобы текстфилд сам присвоил себе ширину/высоту после заполнения текстом, а потом изменить ему ширину.
Ширину можно спокойно менять параметром _width. Но тут есть тонкость.
autoSize будет всё равно сохранять ширину текста неизменной. При
установке _width, блок текста буде смещаться по горизонтали
соответственно заданной ширине, а ширина будет сохранять свое значение
неизменным.
Кроме того, если добавляешь/изменяешь текст в поле, его размер, _width/
_height, обновится только в следующем фрейме. Поэтому если нужен
размер текста сразу после изменений текста, используй textWidth/
textHeight - они обновятся сразу.
Итак, если тебе нужно поле с wordwrap-ом, меняй его размер _width, а
текст выравнивай форматированием (TextFormat). autoSize будет тебе
обеспечивать увеличение по вертикали.
В ином случае, autoSize сам будет менять размеры поля в нужном тебе
направлении, но без авто-переноса текста.
техтItem.txt.autoSize=true;
техтItem.txt.text="Динамически создаваемый текст";
техтItem.txt.autoSize=false;
техтItem.txt._width=100;// типа, пытаемся выставлять опосля всего нужную
динамическую ширину.
Вот. Все это нужно, чтоб поиметь правильную высоту и толково расставить все
эти текстфилды в зависимости от изменившейся высоты. Не работает. Попробовал
уже с онЕнтерФреймом. Ширину удается переприсвоить, а высоту - шиш с
вологодским маслом.
Третий день с этим сижу, как кегля.. Уж все перепробовал..
Поля создаются динамически.
техтItem.txt.autoSize=true;
техтItem.multiline = true;
техтItem.wordWrap = true;
техтItem.txt._width=100;
техтItem.txt.text="Динамически создаваемый текст";
--
iv
То-есть изначально у строки (single line) одна высота, а после
присваивания текста, она меняется, например, из-за того что поменялся
размер шрифта. Ты хочешь получить новый размер по вертикали?
txt.textHeight - правильная высота текста - пробовал? Только от
истинного _height она будет отличаться, т.к. _height будет включать
отступ от рамки (размер отступа можно засечь еще до присвоения
значения). Но _height не изменится в том же фрейме, в котором
присваивается текст - он обновится позже, поэтому его использовать не
получится.
А textHeight - изменится сразу. Я так делал однозначно.
Если ты вручную хочешь поменять _height, то скорее всего это не даст
никакого результата, да и зачем это.
> Зачем мне техтItem.multiline = true; техтItem.wordWrap = true; ?
> Типа, не надо мне.. Ровная строка без переносов.
- если бы это еще следовало из твоего вопроса...
а следует как раз обратное, поскольку текст
"Динамически создаваемый текст"
не уместится в ширину 100 пикселов.
впрочем неважно. пробуем так:
txt.autoSize=true;
txt.text="Динамически создаваемый текст";
var foo:Number = txt._width;
foo = txt._height;
var text_height:Number = txt._height;
txt.autoSize = false;
txt._width = 100;
txt._height = text_height;
--
iv