PDA

Просмотр полной версии : Scroll в text_txt.autosize = true


sem1313
20.02.2007, 21:16
Не знаю откуда взялся скролл в автосайзе, но он есть. Ведь насколько мне известно - автосайз, это выравнивание по высоте, по этому априори не должно быть ни какого скрола. Бред какой то. Это я наблюдаю давно. Но только сейчас решил спросить, потому как в текущем проекте, это стало критично.

etc
20.02.2007, 21:41
А ты попробуй сначала текст присвоить, потом autoSize ему в true :D
Хотя нет, это заморочки не embed шрифтов.
Щас поковыряю.

UPD: Шрифт embed. А вот maxscroll у поля равен 2. Гм… Думаем дальше.

sem1313
20.02.2007, 21:52
От смены мест слагаемых, результат не меняется... :)))

sem1313
20.02.2007, 22:47
Кроме как отключить mouseWheel, я не пришел, ни к какому выводу... Хотя при выделении видно "лишнюю" строку

etc
20.02.2007, 22:49
Ничего не надумал, я всегда selectable в false ставлю :D
Хотя, скроллинг был всегда точно.

Тебе нужно оставить поле выделяемым?

sem1313
20.02.2007, 23:03
По идее, да. Selectable нужно оставить включенным. С заказчиком надо поговрить, и сказать, что нельзя так делать... :D...

Скроллинг, ладно с ним, его можно отключить, а вот как быть с выделением текста(?).... Там все время появляется лишняя строка...

lowka
20.02.2007, 23:07
Можно выставлять насильно badTextField.scroll = 1 с помощью setInterval... Только все равно эта строка будет появляется, но значительно реже.
+
А поле обязательно должно не программно создаваться? Просто программное поле такой шутки не выдает.

sem1313
20.02.2007, 23:25
2lowka, нет, это извращение... К тому же scroll вообще должен отсутствовать как таковой...

KPaul
21.02.2007, 00:56
Походу небольшая бага для полей созданных в авторской среде, другого обяснения я не нашёл. :)
Если приемлемо, создай поле динамически, проблемы отпадут:
this.createTextField("txt", 1, 29, 158, 517, 21);
txt.wordWrap = true;
txt.multiline = true;
txt.autoSize = true;
txt.text = "...";

sem1313
21.02.2007, 06:38
Всем спасибо.

Double
21.02.2007, 08:42
посмотрел файл. никакого скролла...

iNils
21.02.2007, 15:50
Проблема заключается в том, что при создании текстового поля ручками, leading имеет значение 2. Если исправить на 0, то скроллинга не будет.
Конечно нам не всегда нужно использовать 0, иногда нужны и другие значение. Решением в данном случаи будет изменение leading только для последней строки. В данном примере надо добавить:
fmt = txText_txt.getTextFormat ();
fmt.leading = 0;
txText_txt.setTextFormat (txText_txt.length - 22, txText_txt.length, fmt);
22 - это количество символов в последней строке. Можно и больше, главное чтобы не привышало сумму символов последней и предпоследней строк.

sem1313
21.02.2007, 17:57
iNils, круто(!)... Спасибо.

Dendroid
21.02.2007, 19:16
Ещё можно менять размер поля после того, как autosize отработает.
Тут я приводил код, который очевидно и для любого положительного leading работает: http://www.flasher.ru/forum/showpost.php?p=577094&postcount=9

Кстати, у меня в 9-м плеере скроллинга в примере не возникает, а в 7-м standalone есть. Пофиксали начиная с какой-то версии?