Автомасштабирование текста TLF в AS3

Мне нужно решение actionscript, которое позволит динамическому тексту помещаться в текстовое поле с заранее определенными размерами (x, y, ширина, высота), а затем будет масштабировать текст вверх или вниз, чтобы он был таким же большим, как он может находиться в пределах этих размеров без прокрутки. Перенос слов был бы автоматическим, и не было бы разрывов абзаца.

У меня есть рабочая модель, использующая классический текст Flash, но я хотел бы иметь возможность использовать встроенный стиль, который предоставляет TLF. Я просто еще не совсем осознал все функции TLF.

Кто-нибудь знает, есть ли уже существующее решение этой ситуации - или, возможно, может направить меня в правильном направлении?


person phil    schedule 02.09.2010    source источник


Ответы (2)


@phil: Это должно помочь: http://aaronhardy.com/flex/size-text-to-container/

Онлайн-демонстрация, щелкните правой кнопкой мыши для исходного кода.

person BigWorld    schedule 02.09.2010
comment
Фантастика! Как раз то, что мне было нужно, чтобы двигаться. Спасибо - person phil; 02.09.2010

Хм - это должно работать, но я не уверен, насколько точен размер шрифта TLF... В любом случае:

newFormat:TextFormat = new TextFormat();
newFormat.size *= myText.width / myText.textWidth;
myText.setTextFormat(newFormat);

Теперь это в основном создает объект TextFormat и устанавливает его размер шрифта на ширину контейнера myText (TextField) (максимальную ширину), разделенную по фактической ширине текста. Опять же - если размер шрифта TLF НЕ такой точный, строка размера должна быть:

newFormat.size *= Math.round(myText.width / myText.textWidth * 100) / 100;

100 означает округление до сотых.

edit: я действительно считаю, что этот метод не только намного проще, но и эффективнее... Я имею в виду - в этом смысл TextField.textWidth...

person Aurel Bílý    schedule 02.09.2010
comment
Это хорошее решение, если вы работаете только с одной строкой. Один опубликованный BigWorld поддерживает несколько. - person Aaronius; 01.06.2012