Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.06.2011, 19:14
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 1  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
По умолчанию Изменить размер текстового поля при вводе

Здравствуйте. Нужно сделать так, чтобы при вводе текста пользователем, ширина и высота поля увеличивались, если текст не помещается (чтобы текст не прятался за пределы поля). Казалось бы все просто: при событии TEXT_INPUT или CHANGE изменять width и height, да вот как вычислить на какую величину их увеличивать? Если увеличить слишком мало, текст уже скрывается и видна только одна буква, если слишком много, то... (мне слишком много не подходит, нужно чтобы поле ограничивало текст впритык). Помогите пожалуйста.
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 28.06.2011, 19:35
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
TextField#textWidth
TextField#textHeight
только не забывайте добавлять по 4 пикселя.
__________________
Reality.getBounds(this);

Старый 28.06.2011, 19:49
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 3  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Цитата:
Сообщение от Wolsh Посмотреть сообщение
TextField#textWidth
TextField#textHeight
Извините, не совсем понял что это за конструкция
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 28.06.2011, 19:58
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 4  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Это публичные свойства. Посмотрите в хелпе.
__________________
тут я

Старый 28.06.2011, 20:00
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 5  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Какие свойства? textWidth и textHeight? Они здесь мне не помогут.

Добавлено через 40 секунд
Или подскажите, пожалуйста как именно в моем случае их применить.

Добавлено через 2 минуты
Мне нужно узнать не величину написанного текста, а то на сколько его прибавить. Что-то типа textWidth+getCharBoundaries(...).width
__________________
Я мало чего умею, но зато хорошо умею учиться...


Последний раз редактировалось HardCoder; 28.06.2011 в 20:04.
Старый 28.06.2011, 20:06
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Что сложного в том, чтобы откорректировать высоту текстового поля по высоте текста + 4 пикселя?

Добавлено через 40 секунд
Ну вычтите из последнего запомненного значения новое, делов-то.
__________________
тут я

Старый 28.06.2011, 20:21
HardCoder вне форума Посмотреть профиль Отправить личное сообщение для HardCoder Найти все сообщения от HardCoder
  № 7  
Ответить с цитированием
HardCoder
 
Аватар для HardCoder

блогер
Регистрация: Apr 2011
Сообщений: 583
Записей в блоге: 2
Ну да, с высотой думаю проблем не будет. А вот с шириной текста непонятно.
Я в предыдущем посте не так выразился. Есть некая ширина текстового поля txt.width.
1. Вычисляем ширину уже написанного текста с помощью textWidth.
2. Видим что значение textWidth уже приближенно к txt.width. Дальше.
3. Пользователь вводит еще один символ и флеш прятает весь раньше написанный текст, оставляя видным лишь последний символ.
Возвращаемся к п.2. Что нужно сделать? Нужно txt.width увеличить, чтобы поместился еще один символ. Увеличиваем на 10 пикселей - мало (еще один символ не помещается, получается то что в п.2). Пробуем увеличить на 50. Много(уродство получается). Выходит что нужно увеличить на ширину вводимого символа плюс отступ+запас(1-2 пиксела). Так вот. Как это сделать программно?
__________________
Я мало чего умею, но зато хорошо умею учиться...

Старый 28.06.2011, 21:06
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 8  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
UPDATE
Во, кажется нашел решение

Код AS3:
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;
        }
    }
}
Там прибавляется к ширине не 4 а 5 - это для того чтобы всеже был виден мигающий курсор каретки. Можно прибавить и больше для.. надежности.. Секрет – в _txt.scrollH = 0;
__________________
Reality.getBounds(this);


Последний раз редактировалось Wolsh; 28.06.2011 в 23:36.
Старый 29.06.2011, 04:16
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 9  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
Wolsh
Жаль, что он только растет... =)
__________________
RTFM

Старый 29.06.2011, 05:43
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 10  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Жаль, что он только растет... =)
Ну это же тестовый код, проявите смекалку)))
Код AS3:
private function onChange(event:Event):void 
{	
	_txt.width = Math.max(50, _txt.textWidth + 5);
	_txt.height = _txt.textHeight + 4;
	_txt.scrollH = 0;
}
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 12:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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