Используйте TextField.getCharBoundaries
, чтобы получить прямоугольник из первых и последних символов в областях, где вы хотите фон. Из этих прямоугольников вы можете построить прямоугольник, который охватывает всю область. Используйте это, чтобы нарисовать фон в Shape
, помещенном позади текстового поля, или в родительском элементе текстового поля.
Обновление Вы просили привести пример, вот как получить прямоугольник из диапазона символов:
var firstCharBounds : Rectangle = textField.getCharBoundaries(firstCharIndex);
var lastCharBounds : Rectangle = textField.getCharBoundaries(lastCharIndex);
var rangeBounds : Rectangle = new Rectangle();
rangeBounds.topLeft = firstCharBounds.topLeft;
rangeBounds.bottomRight = lastCharBounds.bottomRight;
Если вы хотите найти прямоугольник для всей строки, вы можете сделать это вместо этого:
var charBounds : Rectangle = textField.getCharBoundaries(textField.getLineOffset(lineNumber));
var lineBounds : Rectangle = new Rectangle(0, charBounds.y, textField.width, firstCharBounds.height);
Если у вас есть границы текстового диапазона, для которого вы хотите нарисовать фон, вы можете сделать это в методе updateDisplayList
родительского элемента текстового поля (при условии, что текстовое поле расположено в [0, 0] и имеет белый текст, а textRangesWithYellowBackground
является массивом прямоугольников, представляющих текстовые диапазоны, которые должны иметь желтый фон):
graphics.clear();
// this draws the black background
graphics.beginFill(0x000000);
graphics.drawRect(0, 0, textField.width, textField.height);
graphics.endFill();
// this draws yellow text backgrounds
for each ( var r : Rectangle in textRangesWithYellowBackground )
graphics.beginFill(0xFFFF00);
graphics.drawRect(r.x, r.y, r.width, r.height);
graphics.endFill();
}