AS3:如何在文本字段中获取某些文本的左上角和精确宽度和高度?

Mar*_*rty 4 actionscript-3 textfield

我们试图得到一个Rectangle代表一个文本的确切*边界TextField.

**尽可能准确.*

拍下这张图片:

在此输入图像描述

使用我目前的知识,我可以检索上面的蓝色矩形,如下所示:

var textRect:Rectangle = new Rectangle(
    field.x,
    field.y,
    field.textWidth,
    field.textHeight
);
Run Code Online (Sandbox Code Playgroud)

但是,我们需要尽可能接近红色矩形(我意识到会有微小的差异,因为角色随/高度变化而且需要有一个共同的基础).

如何获得红色矩形(动态)?


我根据Jacob Eggers的答案设置了这个助手类,但是我总是得到(x=0, y=0, w=0, h=0)...

package
{
    import flash.display.BitmapData;
    import flash.text.TextField;
    import flash.geom.Rectangle;

    public class TextBounds
    {

        public static function getTextBounds(textField:TextField):Rectangle
        {
            var curtainColor:uint = 0x00FF00;
            var bmd:BitmapData = new BitmapData(textField.width, textField.height, false, curtainColor);
            bmd.draw(textField);

            return bmd.getColorBoundsRect(curtainColor, textField.textColor, true);
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

即使我用我正在寻找的颜色填充一小部分,我仍然得到一个零大小的矩形:

bmd.fillRect(new Rectangle(0, 0, 30, 30), textField.textColor);
Run Code Online (Sandbox Code Playgroud)

Jac*_*ers 5

使用BitmapData.draw,然后使用getColorBoundsRect获取黑色文本的边界.像这样的东西:

import flash.display.Bitmap;
import flash.display.BitmapData;

var bmd:BitmapData = new BitmapData(80, 40, false, 0xFFFFFF);
bmd.draw(tf)

var maskColor:uint = 0xFFFFFF; 
var color:uint = 0x000000;  //the color of the text
var tfBounds:Rectangle = bmd.getColorBoundsRect(maskColor, color, true);
trace(tfBounds);
Run Code Online (Sandbox Code Playgroud)

编辑关于文本颜色的好抓zachzurn.我添加了一条评论来澄清.