2009-06-11 3 views

답변

3

당신이 TextField 클래스에 포함되어 필요한 기능을 제공합니다. 특정 위치에서 선을 얻으려면 getLineIndexAtPoint 방법을 TextField 사용해야합니다.

하지만 TextArea는 사용자의 내부 TextField 클래스를 숨 깁니다.

따라서, 옵션 1은 UITextField을 사용하는 것입니다. 옵션 2는 TextArea을 확장하고 거기에 필요한 기능을 구현합니다. 빠른 응답 Hrundik에 대한

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

감사 : 여기

당신이 시작하는 데 도움이 빠른 프로토 타입입니다. 그것은 작동 ..... ..... 하지만 어떻게 특정 라인의 배경을 강조 표시 할 수 있습니까? 다시 한번 감사드립니다. – shivang

+0

매우 유용한 팁, TextField.getLineIndexAtPoint()에 대해 알지 못했습니다. mx.controls.TextArea는 textField를 숨기지 만 fl.controls.TextArea는 public 속성 'textField'를가집니다. – jhocking

관련 문제