|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Изменить размер текстового поля при вводе
Здравствуйте. Нужно сделать так, чтобы при вводе текста пользователем, ширина и высота поля увеличивались, если текст не помещается (чтобы текст не прятался за пределы поля). Казалось бы все просто: при событии TEXT_INPUT или CHANGE изменять width и height, да вот как вычислить на какую величину их увеличивать? Если увеличить слишком мало, текст уже скрывается и видна только одна буква, если слишком много, то... (мне слишком много не подходит, нужно чтобы поле ограничивало текст впритык). Помогите пожалуйста.
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
TextField#textWidth
TextField#textHeight только не забывайте добавлять по 4 пикселя.
__________________
Reality.getBounds(this); |
|
|||||
Какие свойства? textWidth и textHeight? Они здесь мне не помогут.
Добавлено через 40 секунд Или подскажите, пожалуйста как именно в моем случае их применить. Добавлено через 2 минуты Мне нужно узнать не величину написанного текста, а то на сколько его прибавить. Что-то типа textWidth+getCharBoundaries(...).width
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 28.06.2011 в 20:04. |
|
|||||
Ну да, с высотой думаю проблем не будет. А вот с шириной текста непонятно.
Я в предыдущем посте не так выразился. Есть некая ширина текстового поля txt.width. 1. Вычисляем ширину уже написанного текста с помощью textWidth. 2. Видим что значение textWidth уже приближенно к txt.width. Дальше. 3. Пользователь вводит еще один символ и флеш прятает весь раньше написанный текст, оставляя видным лишь последний символ. Возвращаемся к п.2. Что нужно сделать? Нужно txt.width увеличить, чтобы поместился еще один символ. Увеличиваем на 10 пикселей - мало (еще один символ не помещается, получается то что в п.2). Пробуем увеличить на 50. Много(уродство получается). Выходит что нужно увеличить на ширину вводимого символа плюс отступ+запас(1-2 пиксела). Так вот. Как это сделать программно?
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
UPDATE
Во, кажется нашел решение package { import flash.display.Sprite; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFieldType; public class Main extends Sprite { private var _txt:TextField; public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point _txt = new TextField(); _txt.type = TextFieldType.INPUT; _txt.multiline = true; _txt.border = true; _txt.width = 50; _txt.height = 20; _txt.x = 200; _txt.y = 150; _txt.addEventListener(Event.CHANGE, onChange); addChild(_txt); } private function onChange(event:Event):void { var placeW:Number = _txt.textWidth + 5; var placeH:Number = _txt.textHeight + 4; if (_txt.width < placeW) _txt.width = placeW; if (_txt.height < placeH) _txt.height = placeH; _txt.scrollH = 0; } } }
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 28.06.2011 в 23:36. |
|
|||||
Wolsh
Жаль, что он только растет... =)
__________________
RTFM |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
__________________
Reality.getBounds(this); |
Часовой пояс GMT +4, время: 12:52. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|