PDA

Просмотр полной версии : Перерисовка программно созданых объектов


_SoWa
29.10.2009, 16:00
Привет всем!
Возникла проблема:
Я создаю переменную типа TextField, создаю переменную format:TextFormat
Текстовому полю присваиваю defaultTextFormat = format;
И этому же текстовому полю даю addEventListener на прослушку событий наведения и увода мышки с объекта.
Мне надо, чтобы при наведении менялся шрифт, цвет и размер текста.
Но описывать в функции обработчике новую переменную типа TextFormat и присваивание event.target.defaultTextFormat = новая переменная - такое не работает. Видимо потому, что TextField уже нарисован. Можно ли его как-нибудь перерисовать?

random13
29.10.2009, 16:41
нет скорее всего потому что у вас компилятор не знает что event.target это TextField

может так?
(event.target as TextField).defaultTextFormat = ...

_SoWa
29.10.2009, 16:52
неа... не то :(
Не работает. И мне кажется все-же не из-за принадлежности к классу... Потому что event.target.text компилятор знает...

random13
29.10.2009, 17:01
ну сделайте иначе, переинициализируйте ваш текстфилд, перед этим сохранив весь текст, затем сделайте текстформат и добавьте текст

_SoWa
29.10.2009, 17:26
Класс, работает! Спасибо за помощь!
Для себя вынес знание- сперва ТекстФилду надо присвоить текстформат, а затем только писать текст. Тогда он будет нужного формата. А если сделать иначе, то сперва текст пишется, а лишь потом присваивается стиль.

SamFR
30.10.2009, 13:35
ну сделайте иначе, переинициализируйте ваш текстфилд, перед этим сохранив весь текст, затем сделайте текстформат и добавьте текст
Достаточно просто переприсвоить текст. Мы же говорим о defaultTextFormat, а он на то и default, что применяется только к добавляемому тексту.

alatar
31.10.2009, 04:30
defaultTextFormat действует только на вводимый пользователем текст, для изменения форматирования используйте метод setTextFormat (после изменения свойства text)

Psycho Tiger
31.10.2009, 09:51
defaultTextFormat действует только на вводимый пользователем текст, для изменения форматирования используйте метод setTextFormat (после изменения свойства text)
Разве? *ушел переправлять много проектов*

SamFR
31.10.2009, 16:18
defaultTextFormat действует только на вводимый пользователем текст, для изменения форматирования используйте метод setTextFormat (после изменения свойства text)
alatar, вы не правы. defaultTextFormat действует не только на вводимый пользователем, а на любой новый текст (будь то вводимый пользователем, присваиваемый с помощью операторов = и +=, либо методами replaceText() и replaceSelectedText()). Так, по крайней мере, написано в справке. У меня же не получилось заставить текстовое поле применить defaultTextFormat вследствие вызова replaceText() и replaceSelectedText().

Также нужно обратить внимание на две вещи:

метод appendText() не приводит к изменению формата
при использовании оператора += формат defaultTextFormat будет применён ко всему тексту, а не только добавляемому, так как t.text += '123' в данном случае равносильно t.text(t.text() + '123').