代码之家  ›  专栏  ›  技术社区  ›  Theo.T

文本字段自动调整大小+最后一个字符的斜体剪切

  •  1
  • Theo.T  · 技术社区  · 16 年前

    在ActionScript3中,我的 TextField 有:

    • CSS样式
    • text对齐:居中
    • 自动调整大小:中心

    ... 当使用斜体字时,最右边的字符会被稍微截断(特别是大写)。 基本上,它似乎无法检测到正确的大小。

    我以前也遇到过这个问题,但只是想知道是否有一个很好的解决方法(而不是检查) textWidth 或抵消文本等)?

    3 回复  |  直到 16 年前
        1
  •  3
  •   Nathaniel Ford iFail    13 年前

    初始化你的 textField 和往常一样,使用多行、自动调整大小、htmlText。。。

    // saving wanted width and height plus 1px to get some space for last char
    var savedWidth = myTextField.width + 1;
    var savedHeight = myTextField.height + 1;
    
    // removing autoSize, wich is the origin of the problem i think                 
    myTextField.autoSize = "none";      
    
    // now manually autoSizing the textField with saved values          
    myTextField.width = savedWidth;
    myTextField.height = savedHeight;
    
        2
  •  1
  •   James Fassett    16 年前

    这并不是说它让你感到很舒服,但Flash有时会在这个看似简单的任务中遇到麻烦。html的CSS样式 TextField 非常 因此,很少使用CSS设置文本样式。我只能想象 大胆的 , 斜体 HTML中的普通类型面会导致Flash的一些宽度计算错误,从而导致 autoSize 把面具短一点。我非常希望 new text rendering engine in Flash Player 10 最终将解决这些问题(理论上看起来肯定更好)。

    所以 我的 解决办法是 从不 在我需要的时候使用HTML <a> 我文本中的链接。。。甚至还有一些棘手的文本转换问题。在这些情况下,我避免在同一文本字段中混合不同的字体权重和字体样式。我用的所有其他箱子 TextFormat 直接在 文本字段

    我想如果你无法摆脱当前的架构(出于某种原因),你可以尝试添加 &nbsp; 到html编码字符串的末尾。或者,您可以手动设置字段的宽度,而不依赖于 自动调整大小 (正如你提到的)。但是如果你继续使用CSS/HTML,你可能会在你不想要的时候发现另一个新的、痛苦的限制。

        3
  •  0
  •   dlamblin    16 年前

    我和你有过矛盾 TextField 遮罩在Flash预览和实际浏览器插件中的行为不同。通常,这对我来说很奇怪,它会在浏览器中显示得更正确。你试过运行 swf 在浏览器中查看问题是否真的是一个令人烦恼的问题,而不是一个永久性的问题?

    我说过:
    解决这个问题的理想方法是将一个变更事件附加到 文本字段 它总是在字段的最后一个字符后添加空格。然后记住在使用该值时要将该空间修剪掉。

    但这并没有考虑到这可能没有更改事件,而且它是一个HTML呈现的文本字段。要在HTML文本字段中添加尾随空格,请输入 &nbsp; 同样,这并不能真正解决问题。