【发布时间】:2011-11-07 00:45:29
【问题描述】:
我们在 MovieClips 中有一个包含一堆 TextField 的库。在运行时,我们创建其中一个实例,在其上运行 getTextFormat 以获取格式,然后在代码中创建一堆 TextField 并在它们上运行 setTextFormat 以赋予它们相同的格式。
我正在尝试做同样的事情,但使用 TLFTextFields。我有以下内容:
var text:TLFTextField = new classFromLib();
text.selectable = true; //required for getTextFormat to work, flash bug
textFormat = text.getTextFormat();
text.selectable = false; // set it back to false
现在的问题是 textFormat.leading 是 -2147483648,而 textFormat.letterSpacing 是 NaN。这在运行 text.setTextFormat(textFormat) 时分别产生以下 2 个运行时错误:
Property lineHeight value -2147483648 is out of range
Property trackingRight value NaN is out of range
如果我在运行 setTextFormat 之前将 textFormat.leading 和 textFormat.letterSpacing 设置为 null,那么一切正常,但显然文本字段没有得到库中的前导和字母间距。这是一个问题,因为我需要这两个属性。有谁知道解决这个问题的方法吗?
【问题讨论】:
-
什么是“classFromLib()”?它是影片剪辑还是 TLFTextField?您可以尝试设置 textFormat = text.defaultTextFormat() 吗?
-
抱歉,我稍微简化了代码,假设文本是由 new classFromLib() 创建的 MovieClip 的有效 TLFTextField 子项。我试过你说的但没有用,text.defaultTextFormat中的所有属性似乎都是默认属性,而不是TLFTextField的实际属性。例如,它使用 Times New Roman 作为字体,这是错误的。但是,我确实解决了“领先”属性的问题。在Flash CS5 中设置Leading 时,可以设为pt 或%。 % 似乎导致值在 getTextFormat 期间获得 min int,但使用 pt 代替修复它。
标签: flash actionscript-3 textfield tlf textformat