Hi, 

I can't get the correct information about line numbers in the text of
a custom class that extends TextArea (call it MyTextArea).

If I set the text property of the TextArea in onCreationComplete()
then getLineIndexAtPoint() returns -1.

I imagine that after I update the text property, I must wait for the
display to update before getLineIndexAtPoint() will return anything
other than -1.  So my questions are:

  1. Can you force the display to update immediately?
      e.g. 
     this.text = "a new line of text";
     // this will return -1 (not what I want)
     trace(this.textField.getLineIndexAtPoint(2));

     forceUpdate();

     // this will return 0 (good)
     trace(this.textField.getLineIndexAtPoint(2));

  2. If you cannot force an update, is there an event to
     listen for so that I know when the getLineIndexAtPoint()
     method will return useful information?


Here is my example code that does not give me what I want:

public class MyTextArea extends TextArea {
   public function MyTextArea() {
      super();
      // wait for creationComplete otherwise this.textField = null
      addEventListener(FlexEvent.CREATION_COMPLETE, onCreationComplete);
  }

   private function onCreationComplete(evt:FlexEvent):void {
      this.text = 'a long line of text \n with a line break ...';

      // these both return -1
      // but I want them to return "0" and "1", repectively
      // because char 1 is on line 1 and char 25 is on line 2
      trace(this.textField.getLineIndexOfChar(1));
      trace(this.textField.getLineIndexOfChar(25));
   }

}

(by the way, in my application, I unfortunately don't have the option
of setting this.text in the constructor).

Thanks in advance for your help,
James

Reply via email to