在 actionscript 3 中,我TextField
有:
- CSS 样式
- 嵌入字体
- 文本对齐:中心
- 自动尺寸:中心
...当使用斜体字时,非常正确的字符会被略微截断(特别是大写字母)。基本上它似乎无法检测到正确的尺寸。
我以前遇到过这个问题,但只是想知道是否有一个很好的解决方法(而不是检查textWidth
或偏移文本等)?
在 actionscript 3 中,我TextField
有:
...当使用斜体字时,非常正确的字符会被略微截断(特别是大写字母)。基本上它似乎无法检测到正确的尺寸。
我以前遇到过这个问题,但只是想知道是否有一个很好的解决方法(而不是检查textWidth
或偏移文本等)?
像往常一样初始化你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;
并不是说它对你来说很舒服,但 Flash 有时会在这个看似简单的任务上遇到麻烦。html 的 CSS 样式TextField
是一个很好的补充,但它给文本渲染带来了麻烦。事实上,出于这个原因,我很少使用 CSS 来设置文本样式。我只能想象在 HTML 中结合粗体、斜体和普通字体会导致 Flash 计算出一些宽度错误,从而导致autoSize
蒙版设置得有点短。我非常希望Flash Player 10 中的新文本渲染引擎最终能解决这些问题(理论上它看起来确实更好)。
所以我的解决方案是永远不要使用 HTML,除非我需要<a>
在我的文本中添加链接......甚至还有一些棘手的文本转换问题。在这些情况下,我会避免在同一文本字段中混合不同的字体粗细和字体样式。我TextFormat
直接在TextField
.
我想如果您无法摆脱当前的架构(出于某种原因),您可以尝试添加
到您的 html 编码字符串的末尾。或者您可以手动设置字段的宽度而不依赖autoSize
(如您所提到的)。但是,如果您继续使用 CSS/HTML 路线,您可能会在您不想要的时候发现另一个新的和痛苦的限制。
TextField
在 Flash 预览和实际浏览器插件中,我遇到了遮罩行为不同的问题。通常,这对我来说很奇怪,它会在浏览器中显示得更正确。您是否尝试过swf
在浏览器中运行以查看问题是否实际上是烦恼而不是永久性问题?
我曾经说过:
我解决此问题的理想方法是将更改事件附加到TextField
始终在字段的最后一个字符之后添加一个空格。然后记住在使用该值时将这个空间剪掉。
但这并没有考虑到这可能没有更改事件并且它是一个 HTML 呈现的文本字段。要在 HTML 文本字段中添加尾随空格,请
再次输入,这并不能真正解决问题。