【问题标题】:Flash - setTextFormat crashes on TLFTextFieldFlash - setTextFormat 在 TLFTextField 上崩溃
【发布时间】: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


【解决方案1】:

您可能需要改为从 TLTFTextfield 获取 TextLayerFormat:

Here's the documentation on the TextLayerFormat.

另一种选择是获取内容属性,以及拥有这些属性的use ElementFormat to get access that the formatting object

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2014-04-08
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    相关资源
    最近更新 更多