Flash - 无法获取TLFTextField的TextLayoutFormat

时间:2011-11-04 08:01:01

标签: flash actionscript-3 textfield tlf

我想要做的就是获取TLFTextField的格式化属性并将其应用于另一个TLFTextField。这很简单,使用经典的TextField:

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

TLFTextField有一个getTextFormat和setTextFormat函数,但它们都非常错误。 getTextFormat仅在将selectable属性更改为true时才有效,否则会生成null对象错误。当TextFormat对象的某些属性不为null时,setTextFormat会生成NaN错误。

TextLayoutFormat对象应该用于TLFTextFields。您可以通过执行以下操作来设置对象:

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

但是,我现在无法弄清楚如何从text1“获取”TextLayoutFormat。一个人提出以下建议:

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

但这只是返回null。有谁知道如何获取TextLayoutFormat所以我可以将它应用到另一个TLFTextField?

2 个答案:

答案 0 :(得分:0)

您使用的是Flex还是Flash?我最近对TLF感到头疼。此页面对我来说是一个很好的参考:http://flashthusiast.com/2010/05/05/getting-started-with-the-tlftextfield-class-in-actionscript-3-0-and-flash-cs5/您是否在文本之前设置了文本格式?我已经做到了,并没有你的空问题。

答案 1 :(得分:0)

在简单的情况下,这可行

var format:TextLayoutFormat = textField.textFlow.hostFormat as TextLayoutFormat;
format.fontFamily = fontFamily;
textField.textFlow.hostFormat = format;
textField.textFlow.flowComposer.updateAllControllers();