2010-03-25 45 views
1

我想找到一種方法,以基於Spark xy,y位置的基於Spark的RichEditableText獲取字符索引。getCharIndexAtPoint()在Spark RichEditableText中相當於

mx.controls.TextArea有一個受保護的getCharIndexAtPoint()方法,但我無法在Spark RichEditableText中找到這個令人失望的等價物。

任何想法或建議?

回答

0

下面是我用什麼:

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; 
} 
0

我有同樣的問題。最初,Even Mien給出的答案對我來說並不起作用。

隨着下面的變化,我得到了它的工作。

 var globalPoint:Point = new Point(stage.mouseX, stage.mouseY); 

     var flowComposer:IFlowComposer = this.textFlow.flowComposer; 

     for (var i:int = 0; i < flowComposer.numLines; i++) 
     { 
      var textFlowLine:TextFlowLine = flowComposer.getLineAt(i); 
      var textLine:TextLine = textFlowLine.getTextLine(true); 
      var textRect:Rectangle = textLine.getRect(stage); 

      if (globalPoint.y >= textRect.top && globalPoint.y < textRect.bottom) 
      { 
       return textFlowLine.absoluteStart + textLine.getAtomIndexAtPoint(globalPoint.x, globalPoint.y); 
      } 
     } 

     return 0;