【问题标题】:textField textWidth is incorrect ActionScript 3textField textWidth 不正确 ActionScript 3
【发布时间】:2011-02-14 20:45:32
【问题描述】:

我有一个使用 postscript 字体的动态文本字段(使用 CS5 中的经典字体引擎)。我在作者时创建了 textField。当我尝试使用 textField.textWidth 属性确定 textField 的实际宽度时,返回的宽度非常错误。例如,屏幕上显示的文本的宽度约为 350 像素。但返回的宽度只有 150 像素。我尝试过切换字体,使用 TextLineMetrix 无济于事。

任何想法为什么我没有得到准确的宽度?

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    确保您设置了文本字段的 autoSize 属性,这将导致 Flash 将宽度识别为文本的宽度,而不是包含文本字段的宽度。试试这样的...

    myTextField.autoSize = TextFieldAutoSize.LEFT;
    trace(myTextField.textWidth);
    

    【讨论】:

      【解决方案2】:

      我发现 getBounds 给出最接近的结果:

      var bounds:Rectangle = textfield.getBounds(textfield.parent);
      

      【讨论】:

      • 那个 .textWidth 属性给了我最奇怪的结果(大部分都更大),但这确实有效。
      • 不幸的是,这给了我与 textField.textWidth 相同的结果。如果您不能/想要使用 autoSize 但需要具有某种格式的文本字段的精确与...,这真的很烦人
      • 也许你可以创建一个单独的函数来创建临时 TextField 并启用 autoSize 并在其中复制文本,然后使用 textWidth?像这样的东西:gist.github.com/krizajb/8fb2aacc68939d8b3dd3f7a1e2a3565b
      【解决方案3】:
      var str:String = "hello world";
      mytf.autoSize = true;
      mytf.text = str;
      trace(mytf.textWidth )
      trace (mytf._width)
      

      62 和 63.8

      奇怪:S

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-29
        • 2010-11-29
        • 1970-01-01
        • 2010-11-06
        相关资源
        最近更新 更多