Re: [ruFlash] AS2: проблема с TextField.autoSize

90 views
Skip to first unread message

iFrame

unread,
Sep 12, 2007, 3:06:06 AM9/12/07
to ruF...@googlegroups.com
Здрасте!

> А то надо вот, чтобы текстфилд сам присвоил себе ширину/высоту после заполнения текстом, а потом изменить ему ширину. Пробовал читать свойства _height/_width и переприсваивать формат..
> Пока шо как-то слабо получается влиять...

А ты попробуй сначала, при создании текстфиелда задать ему нужную
ширину, а потом указать autosize = true;. Если ты хотел, чтоб твой
текстфиелд увеличивался по вертикали. Я иногда, чтоб указать ему, куда
нужно двигатся применяю к соотв. свойству NaN и вроде работает. :)

Или я, как всегда, не понял вопроса?

--
/*
Нет проблем, есть люди.
*/

Racer

unread,
Sep 12, 2007, 3:37:44 AM9/12/07
to ruFlash
Я может тоже не понял вопроса (точнее двух его знаков :) )
Попытаюсь подробно объяснить как я это себе представляю.

> Судя по всему, 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 сам будет менять размеры поля в нужном тебе
направлении, но без авто-переноса текста.

Alex Davydov

unread,
Sep 12, 2007, 11:30:03 AM9/12/07
to ruF...@googlegroups.com
Ну если так коротенько, то сотворить пытаюсь простую вещь ::

техтItem.txt.autoSize=true;
техтItem.txt.text="Динамически создаваемый текст";
техтItem.txt.autoSize=false;
техтItem.txt._width=100;// типа, пытаемся выставлять опосля всего нужную
динамическую ширину.

Вот. Все это нужно, чтоб поиметь правильную высоту и толково расставить все
эти текстфилды в зависимости от изменившейся высоты. Не работает. Попробовал
уже с онЕнтерФреймом. Ширину удается переприсвоить, а высоту - шиш с
вологодским маслом.

Третий день с этим сижу, как кегля.. Уж все перепробовал..
Поля создаются динамически.

Ivan Dembicki

unread,
Sep 12, 2007, 12:11:51 PM9/12/07
to ruF...@googlegroups.com
Hello Alex,

техтItem.txt.autoSize=true;
техтItem.multiline = true;
техтItem.wordWrap = true;
техтItem.txt._width=100;

техтItem.txt.text="Динамически создаваемый текст";


--
iv

Alex Davydov

unread,
Sep 12, 2007, 12:14:01 PM9/12/07
to ruF...@googlegroups.com
Зачем мне техтItem.multiline = true; техтItem.wordWrap = true; ? Типа, не
надо мне.. Ровная строка без переносов.

Racer

unread,
Sep 12, 2007, 1:45:10 PM9/12/07
to ruFlash
> надо мне.. Ровная строка без переносов.

То-есть изначально у строки (single line) одна высота, а после
присваивания текста, она меняется, например, из-за того что поменялся
размер шрифта. Ты хочешь получить новый размер по вертикали?
txt.textHeight - правильная высота текста - пробовал? Только от
истинного _height она будет отличаться, т.к. _height будет включать
отступ от рамки (размер отступа можно засечь еще до присвоения
значения). Но _height не изменится в том же фрейме, в котором
присваивается текст - он обновится позже, поэтому его использовать не
получится.
А textHeight - изменится сразу. Я так делал однозначно.

Если ты вручную хочешь поменять _height, то скорее всего это не даст
никакого результата, да и зачем это.

Alex Davydov

unread,
Sep 12, 2007, 1:52:21 PM9/12/07
to ruF...@googlegroups.com
А затем, что когда я создаю энти поля createTextField-ом, то размеры поля с
текстом внутре и примененным форматом неизвестны...

Ivan Dembicki

unread,
Sep 12, 2007, 3:18:34 PM9/12/07
to ruF...@googlegroups.com
Hello Alex,

> Зачем мне техт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

Reply all
Reply to author
Forward
0 new messages