![]() |
Динамическое изменение высоты TextField
Подскажите, пожалуйста решение. Столкнулся с такой проблемой: требуется создать текстовое поле с постоянной шириной, скажем, в 200 пикселей. В поле добавляется какой-либо текст. Нужно, чтобы поле автоматчиески изменило высоту. Казалось бы, задача не такая сложная, но textHeight, к сожалению, возвращает всегда высоту одной строки :(
Может, я изобретаю велосипед и есть какой-то штатный способ? |
ставишь ему width = 200 ... и вроде всё.
а, ещё wordWrap = true; |
Цитата:
Вернее, я плохо описал проблему. Мне нужно сделать, чтобы текст по умолчанию был 150 пикселей в ширину, если текст больше 150, но меньше 200, то он должен растягивать поле по горизонтали. Если больше 200, то переносится в несколько строк и по ширине стать ровно стоько, сколько нужо (но не меньше 150) - вот тут-то и покрадывается проблема: когда тест становится могострочным, невозможно определить его реальную ширину (т.е. шириной самой широкой строки) т.к. textWidth возвращает длину всего текста :( |
Я там дописал - wordWrap = true и textWidth возвращает ширину самой широкой строки. Не оч. понял, что хотите, но вродь должно хватить. Если что скейлить по горизонтали - scaleX ещё есть.
|
Ну, я вижу, что плохо объяснил.
Скажем, проблема такая: Нужно, чтобы поле автоматически изменяло высоту (этого добиться понятно как - выше перечислено) и автоматически уменьшало ширину до ширины самой длинной строки. Вот в этом как раз проблема, т.к. textWidth возвращает не длину самой длинной строки, а всего текста, если бы он стоял в одну строку. |
Код AS3:
|
incvizitor, думал б этом, но не будет работать, т.к. этот код установит ширину в 150 при наличии нескольких строк, а в тексте может быть слово длинее 150 пикселей. Соответственно, оно разобьется. В идеале в таком случае ширина должна устанавливаться как ширина самого длинного слова.
Добавлено через 5 минут Кстати, а можно как-то сделать, чтобы текст переносился по словам, а не по буквам? А то бьющиеся слова - это как-то вообще не весело Добавлено через 50 минут В общем, правильынй ответ, хоть и извращеный: split'им текст исходного текстового поля по пробелу, в цикле содаем с таким же форматированием текстовые поля с каждым из этих слов, смотрим ширину самого длинного (естественно с autosize). Присваиваем ширину самого длинного слова исходном полю. Единственная проблема - почему-то полученное значение примерно на 15 пикселей меньше реального. Блин, во флеше постоянно какие-то проблемы с текстом были. Ужас просто. |
Цитата:
|
| Часовой пояс GMT +4, время: 12:22. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.