Показать сообщение отдельно
Старый 08.11.2010, 20:41
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 60  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,600
Записей в блоге: 17
Цитата:
Не при установке, а когда забираешь. Иначе бы можно было просто менять сам TextFormat, и его изменения должны сразу же отображается, а этого не происходит без переназначения его текстовому полю.
Хм.
Вообще мои рассуждения такие: TextFormat не наследуется от EventDispatcher`а, а значит путей что-то сказать TextFormat`у TextField`у нету. Поэтому изменяя поля TextFormat `а изменения в TextField`е не могут происходить. Поэтому обновление отображения текста в текстовом поле происходит в сеттере defaultTextFormat (ну и в setTextFormat).
Однако твоё утверждение что defaultTextFormat клонируется когда забираешь тоже верно:
Код AS3:
trace(textField.defaultTextFormat === textField.defaultTextFormat); //false
Однако:
Код AS3:
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");
Но Hello world выводится монотонным цветом. Тут стоило бы сказать что значит клонирование происходит и в сеттере, но следующий тест ввёл меня в ступор:

Код AS3:
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");
И снова Hello world выводится монотонным. Похоже я ничего не понимаю в текстформатах. Объясните, пожалуйста.


Последний раз редактировалось iNils; 08.11.2010 в 20:46.