Показать сообщение отдельно
Старый 05.10.2010, 16:09
koIIImarik вне форума Посмотреть профиль Отправить личное сообщение для koIIImarik Посетить домашнюю страницу koIIImarik Найти все сообщения от koIIImarik
  № 1  
Ответить с цитированием
koIIImarik
 
Аватар для koIIImarik

Регистрация: Jul 2007
Адрес: Россия, Москва
Сообщений: 522
По умолчанию Размеры текстового поля

Есть текстовое поле. В него может быть добавлен любой текст.
Есть ограничения для текстового поля. Допустим, оно не может быть больше 100px по ширине и 200px по высоте.
Текстовое поле multiline и wordWrap, само подстраивается под нужные размеры текста через TextFieldAutoSize.LEFT.

Необходимо: узнать, какие размеры нужно задать текстовому полю, чтобы текст не был больше максимально возможных значений по обеим сторонам (сделаем тут допущение, что текста столько, что он в любом случае не будет вылазить по обоим сторонам).

У меня такое ощущение, что это очень легко должно реализовываться, но почему-то ничего не приходит в голову.

P.S.: Хотелось бы, чтобы всё работало примерно следующим образом:

Код AS1/AS2:
var _tf:TextField = new TextField();
this.addChild(_tf);
_tf.autoSize = TextFieldAutoSize.LEFT;
_tf.multiline = true;
_tf.wordWrap = true;
_tf.border = true;
_tf.text = "MailBtn | onLoadingError __ event..errorMessage = Error in [SomaLoader] IOErrorEvent: Error #2032: Ошибка потока. URL: http://************ ****** ****";
_tf.width = 50;
 
// Тут мы корректируем высоту и, хотелось бы, чтобы ширина корректировалась автоматически
if (_tf.height > 100)
{
	_tf.height = 100;
}
Т.е. после корректирования одной из сторон, другая сторона автоматически корректирует свои размеры. На сколько я знаю, данный способ работает, если нам нужно уменьшить ширину текстового поля и свойство wordWrap у него задано в true, но в данном случае не могу понять как сделать так, чтобы работало как нужно.

По-моему, в AS2 нечто подобное можно было организовать с помощью getTextExtent().

Буду очень благодарен за любую помощь.


Последний раз редактировалось koIIImarik; 05.10.2010 в 16:20.