我想找到一种方法来获得基于鼠标x,y位置的基于火花的RichEditableText中的字符索引。
mx.controls.TextArea有一个受保护的getCharIndexAtPoint()方法,但我在Spark RichEditableText中找不到与此等效的方法,这令人失望。
有什么想法或建议吗?
发布于 2010-03-25 20:46:49
我明白为什么了。看起来RichEditableText使用FTE,而TextArea使用TextField,所以你可以只使用TextField::getCharIndexAtPoint。您也可以在某一点上没有char。
我已经很久没有看过FTE了,但我认为TextLine::getAtomIndexAtPoint会是一个很好的开始。此外,您还应该看看TLFTextField::getCharIndexAtPoint。
发布于 2010-11-01 14:57:59
我正在寻找一个类似的解决方案,在back2dos的提醒下,我想出了以下解决方案,可能需要一些工作,但它是有效的
http://www.justinpante.net/?p=201
发布于 2010-12-03 02:09:51
下面是我使用的代码:
private function getCharAtPoint(ta:RichEditableText, x:Number, y:Number) : int
{
var globalPoint:Point = ta.localToGlobal(new Point(x, y));
var flowComposer:IFlowComposer = ta.textFlow.flowComposer;
for (var i:int = 0; i < flowComposer.numLines; i++){
var textFlowLine:TextFlowLine = flowComposer.getLineAt(i);
if (y >= textFlowLine.y && y < textFlowLine.height + textFlowLine.y)
{
return textFlowLine.absoluteStart
+ textFlowLine.getTextLine(true)
.getAtomIndexAtPoint(globalPoint.x, globalPoint.y);
}
}
return -1;
}https://stackoverflow.com/questions/2514168
复制相似问题