Flash - не удается получить TextLayoutFormat для TLFTextField - PullRequest
0 голосов
/ 04 ноября 2011

Все, что я хочу сделать, это получить свойства форматирования TLFTextField и применить его к другому TLFTextField. Это было просто, используя классический TextField:

var textFormat:TextFormat = text1.getTextFormat();
text2.setTextFormat(textFormat);

TLFTextField имеет функции getTextFormat и setTextFormat, но они оба очень глючные. getTextFormat работает только в том случае, если вы изменяете свойство selectable на true, в противном случае генерируется ошибка нулевого объекта. setTextFormat генерирует ошибку NaN, когда некоторые свойства объекта TextFormat не равны NULL.

Предполагается, что объект TextLayoutFormat будет использоваться вместо TLFTextFields. Вы устанавливаете объект, выполняя следующие действия:

var text1:TLFTextField = new TLFTextField();
var textLayoutFormat:TextLayoutFormat = new TextLayoutFormat();
var textFlow:TextFlow = text1.textFlow;
textFlow.hostFormat = textLayoutFormat;
textFlow.flowComposer.updateAllControllers();

Однако я не могу понять, как теперь получить TextLayoutFormat из text1. Один человек предложил следующее:

textLayoutFormat = ((text1.textFlow.getChildAt(0) as ParagraphElement).getChildAt(0) as SpanElement).computedFormat as TextLayoutFormat;

Но это только что вернулось ноль. Кто-нибудь знает, как получить TextLayoutFormat, чтобы я мог применить его к другому TLFTextField?

Ответы [ 2 ]

0 голосов
/ 01 ноября 2013

В простом случае это работает

var format:TextLayoutFormat = textField.textFlow.hostFormat as TextLayoutFormat;
format.fontFamily = fontFamily;
textField.textFlow.hostFormat = format;
textField.textFlow.flowComposer.updateAllControllers();
0 голосов
/ 05 ноября 2011

Используете ли вы Flex или Flash?У меня недавно были собственные головные боли с TLF.Эта страница была хорошим справочным материалом для меня: http://flashthusiast.com/2010/05/05/getting-started-with-the-tlftextfield-class-in-actionscript-3-0-and-flash-cs5/ Вы устанавливаете формат текста перед текстом?Я сделал это, и у тебя не было твоей нулевой проблемы.

...