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

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

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
По умолчанию Растягивающееся TextField

Пытаюсь сделать текстовое поле, которое при вводе текста самостоятельно растягивается по высоте (ширина задана жестко).
Но есть нюанс - хочу вводить не просто текст, а текст с тэгами HTML.
Для этого применяю вот такой подход:
Код AS3:
public class RubberTextField extends TextField {
 
	public function RubberTextField() {
 
		super();
		super.type = TextFieldType.INPUT;
		super.border = true;
		super.borderColor = 0x000000;
		super.multiline = true;
		super.wordWrap = true;
 
		super.addEventListener(TextEvent.TEXT_INPUT, onInput);
		super.addEventListener(Event.CHANGE, onInput);
 
 
	}
 
	private function onInput(evt:Event):void {
 
		if (evt is TextEvent) {
 
			evt = (evt as TextEvent);
			evt.preventDefault();
			super.htmlText = super.htmlText + (evt as TextEvent).text;
			super.setSelection(super.htmlText.length, super.htmlText.length);
 
		}
 
		super.height = this.textHeight + 8;
 
	}
 
}
Но почему-то каждый новый символ появляется с новой строки.
не могу понять, в чем причина и как этого избёгнуть ? =)

UPD:
трейс выдает вообще что-то ужасное =) каждый символ ставится в кучу тэгов типа <p>, <font> и тп
По сути, мне нужно вставить новый текст между этими тэгами, но может как-то это можно сделать автоматически?
__________________
...вселенская грусть


Последний раз редактировалось gloomyBrain; 17.11.2009 в 22:35.
Старый 17.11.2009, 22:41
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 2  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Лучше всего использовать text и textFormat. А вообще, с изменением размеров текстового поля в момент ввода куча глюков. Можно попробовать для начала реализовать растягивание без форматирования, а там уж, если получится, и с ним.

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
У меня глюков нет никаких =) Возьмите код и попробуйте. Да и проблема-то не в том
Да, я согласен насчет text + textFormat, однако продолжаю упорствовать над htmlText =)
__________________
...вселенская грусть

Старый 17.11.2009, 23:12
SamFR вне форума Посмотреть профиль Отправить личное сообщение для SamFR Посетить домашнюю страницу SamFR Найти все сообщения от SamFR
  № 4  
Ответить с цитированием
SamFR

Регистрация: Mar 2008
Адрес: Ростов-на-Дону
Сообщений: 354
Да? Значит я что-то делал не так

Автоматически – вряд ли... Скорее всего, придётся написать функцию преобразования позиции символа в обычном тексте в позицию в html-тексте, и с помощью неё вставлять введённый символ в html-текст. А сам html-текст хранить в дополнительной переменной, так как TextField изменяет значение своего свойства htmlText, дописывая туда всякие теги типа TEXTFORMAT. Хотя я не полностью в этом уверен, но вроде бы несколько раз сталкивался.

С функцией преобразования проблем особых быть не должно, она должна просто пропускать все теги. Единственно что, могут быть небольшие сложности с <p>, <br> и пробелами между тегами, которые, насколько я помню, в некоторых случаях пропускаются. Это если писать компонент для произвольного html-текста. Если же чётко задать допускаемый формат html-разметки, то многое упрощается.

Добавлено через 4 минуты
И ещё немного не в тему)
Мне кажется, лучше блок if в обработчике из вашего примера переписать так:
Код AS3:
if (evt is TextEvent) {
	var textEvt:TextEvent = evt as TextEvent;
	textEvt.preventDefault();
	super.htmlText = super.htmlText + textEvt.text;
	super.setSelection(super.htmlText.length, super.htmlText.length);
}


Последний раз редактировалось SamFR; 17.11.2009 в 23:20.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:34.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
htmltext , textfield
Опции темы
Опции просмотра

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

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


 


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


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