Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Перерисовка программно созданых объектов (http://www.flasher.ru/forum/showthread.php?t=131850)

_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

может так?
Код AS3:

(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

Цитата:

Сообщение от random13 (Сообщение 861938)
ну сделайте иначе, переинициализируйте ваш текстфилд, перед этим сохранив весь текст, затем сделайте текстформат и добавьте текст

Достаточно просто переприсвоить текст. Мы же говорим о defaultTextFormat, а он на то и default, что применяется только к добавляемому тексту.

alatar 31.10.2009 04:30

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

Psycho Tiger 31.10.2009 09:51

Цитата:

Сообщение от alatar (Сообщение 862313)
defaultTextFormat действует только на вводимый пользователем текст, для изменения форматирования используйте метод setTextFormat (после изменения свойства text)

Разве? *ушел переправлять много проектов*

SamFR 31.10.2009 16:18

Цитата:

Сообщение от alatar (Сообщение 862313)
defaultTextFormat действует только на вводимый пользователем текст, для изменения форматирования используйте метод setTextFormat (после изменения свойства text)

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

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


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

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