大家好, 如何在鼠标点击,按键和键盘等事件中找到行号。 并且还要突出显示该颜色的线条。 我使用了TextArea。
先谢谢。
此致 shivang
答案 0 :(得分:3)
您需要的功能包含在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);
}
}
}