Mega Code Archive

 
Categories / Flash ActionScript / TextField
 

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