【发布时间】:2012-03-24 16:31:46
【问题描述】:
我们正在尝试获取一个Rectangle,它代表TextField 中文本的确切*边界。
**尽可能精确。*
拍下这张照片:
使用我目前的知识,我可以像这样检索上面的 蓝色 矩形:
var textRect:Rectangle = new Rectangle(
field.x,
field.y,
field.textWidth,
field.textHeight
);
但是,我们需要尽可能接近 红色 矩形(我意识到会有细微的差异,因为字符随/高度而变化,并且需要有一个共同点)。
如何(动态)获得红色矩形?
我根据 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);
}
}
}
即使我用我正在寻找的颜色填充一小部分,我仍然会得到一个大小为零的矩形:
bmd.fillRect(new Rectangle(0, 0, 30, 30), textField.textColor);
【问题讨论】:
-
@MartyWallace,如果 Jacob Eggers 下面发布的解决方案不能解决发布的问题,请将其取消标记为问题的答案,因为这会误导。