Highlight a paragraph when the user clicks a character : MouseEvent « TextField « Flash / Flex / ActionScript

Home
Flash / Flex / ActionScript
1.Animation
2.Array
3.Class
4.Data Type
5.Development
6.Function
7.Graphics
8.Language
9.Network
10.Regular Expressions
11.Statement
12.String
13.TextField
14.XML
Flash / Flex / ActionScript » TextField » MouseEvent 
Highlight a paragraph when the user clicks a character
 

package {

  import flash.display.Sprite;
  import flash.text.TextField;
  import flash.events.MouseEvent;
  import flash.geom.Rectangle;
  import flash.text.TextLineMetrics;

  public class Main extends Sprite {

    private var _field:TextField = new TextField(  );
    private var _highlight:Sprite = new Sprite(  );

    public function Main(  ) {
      _field.border = true;
      _field.background = true;
      _field.multiline = true;
      _field.wordWrap = true;
      _field.selectable = false;
      _field.width = 400;
      _field.height = 400;
      addChild(_field);
      _field.text = "Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text ";
      _field.addEventListener(MouseEvent.CLICK, onDoubleClick);
      addChild(_highlight);
    }
    
    private function onDoubleClick(event:MouseEvent):void {
      var index:int = _field.getCharIndexAtPoint(mouseX, mouseY);
      var startIndex:int = _field.getFirstCharInParagraph(index);
      var stopIndex:int = startIndex + _field.getParagraphLength(index);
      var startLine:int = _field.getLineIndexOfChar(startIndex);
      var stopLine:int = _field.getLineIndexOfChar(stopIndex - 1);
      var metrics:TextLineMetrics;
      var lineCharacter:int;
      var rectangle:Rectangle;
      _highlight.graphics.clear(  );
      _highlight.graphics.lineStyle(000);
      for(var i:int = startLine; i <= stopLine; i++) {
          lineCharacter = _field.getLineOffset(i);
          rectangle = _field.getCharBoundaries(lineCharacter);
          metrics = _field.getLineMetrics(i);
        _highlight.graphics.beginFill(0x00FFFF.25);
        _highlight.graphics.drawRect(rectangle.x, rectangle.y, metrics.width, metrics.height);
        _highlight.graphics.endFill(  );
      }
    }
    
  }
}

        
Related examples in the same category
1.Add mouse click listener to TextField
2.Disappearing TextField
3.Working with Advanced Text Layout
4.Drag and drop text
5.To remove the highlight when the mouse moves away from both text fields, we would first register both text fields to receive the MouseEvent.MOUSE_OUT event
6.Clickable TextField
7.Using multiLine and TextMetrics: set the characters in the line underneath the user's mouse to red.
8.Unicode characters
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.