Используйте TextField.getCharBoundaries
, чтобы получить прямоугольник первых и последних символы в тех областях, где вы хотите фон. Из этих прямоугольников вы можете построить прямоугольник, охватывающий всю область. Используйте это, чтобы нарисовать фон в Shape
, расположенном за текстовым полем или в родительском элементе текстового поля.
Update вы просили пример, вот как получить прямоугольник из диапазона символов:
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();
}
О, конечно, показать мне, давая более подробную информацию. ;-D Упрощенный! – 2008-09-13 15:12:10