Мы пытаемся получить Rectangle
, который представляет точную * границу текста в TextField
.
** Точно, насколько возможно. *
Возьмите это изображение:
Используя мои текущие знания, я могу получить синий прямоугольник выше, вот так:
var textRect:Rectangle = new Rectangle(
field.x,
field.y,
field.textWidth,
field.textHeight
);
Однако нам нужно максимально приблизиться к красному прямоугольнику (я понимаю, что будут небольшие отличия, потому что символы меняются с / height и нужно будет найти общий язык).
Как я могу получить красный прямоугольник (динамически)?
Я создал этот вспомогательный класс, основываясь на ответе ниже Джейкоба Эггерса, однако всегда получаю результат (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);