我正在尝试在AS3中为文本字段绘制背景。
我有一个带嵌入字体的TextField并使用autoSize = TextFieldAutoSize.LEFT。我将文本分配给TextField然后调用try使用TextField的textWidth绘制一个roundedRect。文本字段宽度始终小于实际文本宽度。
还有其他方法可以获得实际的文本宽度吗?我做了一些谷歌快速搜索,但我没有找到任何东西。
代码:
var tfProgramName:TextField = TextUtil.createTextField(true,"Arial",20,true);
tfProgramName.width = 100;
tfProgramName.autoSize = TextFieldAutoSize.LEFT;
tfProgramName.x = 5;
tfProgramName.y = 5;
addChild(tfProgramName);
tfProgramName.text = _program.title;
background.graphics.clear();
background.graphics.beginFill(0xFF0000,0.75);
background.graphics.drawRoundRect(0,0,tfProgramName.textWidth+10,this.height+10,5,5);
background.graphics.endFill();
在我的情况下,答案 0 :(得分:1)
我不能保证它会更好,但看看TextLineMetrics它提供的信息比其他任何东西都多,所以这可能是你最好的选择。
答案 1 :(得分:0)
你可以尝试做的是使用TextField的getCharBoundaries()或getCharIndexAtPoint()的返回值。 TextField的textWidth属性似乎总是偏离几个像素 - 它将返回一些宽度小而不是文本的实际宽度。 LineMetrics也可以提供帮助,但我自己并没有使用它。
答案 2 :(得分:0)
TextField类不仅具有.width属性,还具有.textWidth,它将返回真正的TextWidth。为了获得TextField的起点,您还需要使用TextLineMetrics获得的起始位置,就像Tyler写道:
var lineMetrics : TextLineMetrics = textField.getLineMetrics(0);
var startX : Number = lineMetrics.x;
和宽度将是:
lineMetrics.width;
或
textField.textWidth;