Необходимая вам функциональность содержится в классе TextField
. Вы должны использовать getLineIndexAtPoint
метод TextField
, чтобы получить линию в определенной позиции.
Но TextArea скрывает внутренний TextField
класс от пользователя.
Итак, первый вариант - использовать UITextField
.
Второй вариант - расширение TextArea
и реализация там необходимых функций.
Вот быстрый прототип, который должен помочь вам начать:
package test
{
import mx.controls.TextArea;
import flash.events.MouseEvent;
import flash.text.TextFormat;
public class HighlightTextArea extends TextArea
{
public function HighlightTextArea()
{
super();
}
override protected function createChildren ():void
{
super.createChildren();
textField.addEventListener(MouseEvent.CLICK, textField_clickHandler);
}
private function textField_clickHandler (event:MouseEvent):void
{
var lineIndex:int = textField.getLineIndexAtPoint(event.localX, event.localY);
if (lineIndex == -1)
return;
var lineOffset:int = textField.getLineOffset(lineIndex);
var lineLength:int = textField.getLineLength(lineIndex);
if (lineLength > 0)
textField.setTextFormat(new TextFormat(null, null, 0xFF0000), lineOffset, lineOffset+lineLength);
}
}
}