Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как подогнать размер шрифта под размер текстового поля (http://www.flasher.ru/forum/showthread.php?t=143119)

Myrka777 07.08.2010 17:49

Как подогнать размер шрифта под размер текстового поля
 
В AS создается текстовое поле txt, к торорому применяется форматирование FRM, согласно которому размер шрифта текста равен 20:
Код AS1/AS2:

var FRM:TextFormat = new TextFormat();
FRM.font = "Arial";
FRM.color = 0xFFFFFF;
FRM.size = 20;
FRM.align = "center";
this.createTextField("txt", 999, 0, 570, 800, 30);
txt.wordWrap = true;
txt.selectable = 0;
txt.autoSize = "center";
txt.type = "static";
txt.setNewTextFormat(FRM);
txt.text = "Подогнанный";

Возможно ли автоматически подогнать размер шрифта под ширину и высоту текстового поля(т.е. 800 и 30 пикселей соотв.) без переноса строк? Может быть существует такая функция или параметр?

udaaff 07.08.2010 21:43

Как-то нелогично подгонять шрифт под поле. Обычно наоборот делается.

rainbowrussia 07.08.2010 23:56

Создайте мувиклип, в нем текстовое поле, а уже мувиклип растягивайте как угодно - хоть с сохранением пропорций, хоть без (если будете искажать пропорции, то, наверное, для этого понадобится embed символов).

Ну или как вариант - создайте временное текстовое поле с autosize, вписывайте в него последовательно нужный текст со все бОльшим размером. Как только размеры поля превысят заданные - запоминайте последний "удачный" размер и его используйте.

Myrka777 16.08.2010 21:05

Объясню немного по-другому.
Имеется swf, в котором с помощью createTextField создается 100 тектовых полей различной ширины. В эти поля вставляется одинаковый текст. Нужно, чтобы этот текст был растянут во всё поле и не получался многострочным. Первоначально вся 100 делается вручную и для каждого поля прописывается свой размер шрифта.
Но внезапно появилась необходимость заменить этот текст на другой, более длинный. С помощью поиска и замены я меняю текст и вижу что он весь не влез в одну строку. Как быть?

rainbowrussia 16.08.2010 23:44

Весь вопрос в том что вы понимаете под "растягиванием" - изменение интервала между буквами, изменение размера шрифта, изменение ширины букв... Если размер шрифта - то создайте 1 поле, помещенное в мувиклип, у мувиклипа есть _xscale, _yscale.

"весь не влез в одну строку. Как быть?" сделать текстовое поле шире.

udaaff 16.08.2010 23:53

Все подгоны и уменьшения не подходят, если смотреть на задачу в общем. (Если не в общем, то лучше просто подгонять размер шрифта, т.е. уменьшать его до тех пора, пока текст полностью не влезет в поле) Потому что можно уменьшить до такого размера, что шрифт будет просто не читаемым.
Возможно, в данной ситуации, лучше выводить подсказку с полным текстом поля, при наведении.

JakalNax 17.08.2010 15:15

Title.text = "БЛА БЛА БЛА";
Title._width = Title.textWidth+5;
Title - динамическое текстовое поле.. с именем Title

udaaff 17.08.2010 19:20

И что это получится?

Myrka777 18.08.2010 14:23

Задача в том, чтобы не подгонять, не вписывать, не растягивать вручную все 100 текстовых полей. Необходимо что-то типа такого:
РАЗМЕР ШРИФТА = тому РАЗМЕРУ ШРИФТА при котором ШИРИНА ТЕКСТА "БЛА-БЛА-БЛА" (в пикселах) = ШИРИНЕ ТЕКСТОВОГО ПОЛЯ (в пикселах), заданной в this.createTextField().

rainbowrussia 18.08.2010 16:26

Еще раз - чем вас не устраивает вариант, когда в MovieClip находится TextField с размером шрифта, например, 10, автосайзом. Мувиклипу вы присваиваете _xscale, _yscale на основе того, какую он сейчас имеет ширину и какая ширина нужна?


Часовой пояс GMT +4, время: 14:30.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.