Цитата:
|
Не при установке, а когда забираешь. Иначе бы можно было просто менять сам 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 выводится монотонным. Похоже я ничего не понимаю в текстформатах. Объясните, пожалуйста.