![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Цитата:
Цитата:
Цитата:
__________________
тут я |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
|
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Нет. Вы спокойно можете так сделать. Но речь шла о нескольких TextFormat. Для этого лучше создать отдельные класс Style и указать все TextFormat там. А в MyClass передать style.
Что касается ссылки на tf, то можно сделать хитрый ход. Так как TextFormat не имеет метода clone, то при задании tf задать его для текстового поля, а только потом с этого же поля и записать TextFormat в переменную, которая будет хранить его для данного состояния, при условии, что начальное значение _tf равно null. |
|
|||||
|
Цитата:
От себя - написать свой clone не сложно - я если надо для себя сделаю прослойку-патч TextFormat, или функцию cloneTextFormat. Цитата:
@iNils: alatar прав, можно долго рассуждать кто что использует, а кто что нет. Опытные разработчики используют компоненты, а если что-то используется без компонента, но ему нужен инвалидатор - он пишется с нуля. Вообще реализация инвалидатора скрыта от того, кто использует этот класс/компонент, а речь идёт сейчас об интерфейсе - как удобней передавать. Короче, спорить можно долго ![]()
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Цитата:
package { /* IMPORT *///{ / import flash.text.TextFormat; import flash.display.Sprite; import flash.text.TextField; //} public class Label extends Sprite { /* - VAR PRIVATE *///{ / private var _fmt:TextFormat = null; private var _tf:TextField = new TextField (); //} /* * CONSTRUCTOR * *///{ / public function Label (fmt:TextFormat) { _tf.defaultTextFormat = fmt; addChild (_tf); _fmt = _tf.defaultTextFormat; } //} } } Цитата:
Последний раз редактировалось iNils; 08.11.2010 в 19:47. |
|
|||||
|
Цитата:
Ну и обратное не всегда верно. Это как если ты хороший повар и ты любишь делать салаты. Но если ты не любишь делать салаты - это не значит что ты плохой повар ![]() По поводу кода - я правильно понимаю что где-то в недрах TextField`а при установке defaultTextFormat происходит клонирование TextFormat? Спасибо, не знал )
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
>>затем используется везде _fmt, который является клоном fmt созданного самим текстовым полем.
выходит, что _fmt не нужен вовсе: |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Не при установке, а когда забираешь. Иначе бы можно было просто менять сам TextFormat, и его изменения должны сразу же отображается, а этого не происходит без переназначения его текстовому полю.
Добавлено через 5 минут silin, это зависит от задумки. Если ты будешь брать TextFormat несколько раз подряд, то каждый раз будет происходить копирования. Я хотя и не измерял, но думаю, что это будет более трудозатратно, чем хранить уже готовую копию. |
|
|||||
|
Цитата:
Вообще мои рассуждения такие: TextFormat не наследуется от EventDispatcher`а, а значит путей что-то сказать TextFormat`у TextField`у нету. Поэтому изменяя поля TextFormat `а изменения в TextField`е не могут происходить. Поэтому обновление отображения текста в текстовом поле происходит в сеттере defaultTextFormat (ну и в setTextFormat). Однако твоё утверждение что defaultTextFormat клонируется когда забираешь тоже верно: Однако: var textFormat:TextFormat = new TextFormat(null, 15, 0x51B5F7); var textField:TextField = new TextField(); textField.defaultTextFormat = textFormat; textField.text = "Hello "; textFormat.color = 0xF751DA; textField.appendText("world"); var textFormat:TextFormat = new TextFormat(null, 15, 0x51B5F7); var textField:TextField = new TextField(); textField.defaultTextFormat = textFormat; textField.text = "Hello "; //поменяли цвет на другой var textFormat2:TextFormat = textField.defaultTextFormat; textFormat2.color = 0x54F364; textField.defaultTextFormat = textFormat2; textField.appendText("world");
__________________
Тут мужик танцует и поёт про флэш Последний раз редактировалось iNils; 08.11.2010 в 20:46. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:55. |
|
|
« Предыдущая тема | Следующая тема » |
|
|