package { import flash.display.Sprite; import flash.events.MouseEvent; import flash.text.engine.*; import flash.utils.Dictionary; [SWF(width="235", height="100")] public class SimpleDemo2 extends Sprite { public function SimpleDemo2() { super(); setup(); } private var lineNumbers:Dictionary = new Dictionary(false); private function setup():void { addChild(lineHolder); lineHolder.y = 40; lineHolder.x = 130; var elements:Vector. = new Vector.(); elements.push( createTextElement('Be careless ', 26), createTextElement('in your dress if you will, ', 16), createTextElement('but keep a ', 20), createTextElement('tidy soul.', 26), createTextElement('\n - Mark Twain', 20) ); var i:int = 0; var block:TextBlock = new TextBlock(new GroupElement(elements)); var line:TextLine = block.createTextLine(null, 125); var _y:Number = 0; while(line) { addChild(line); _y += line.height; line.y = _y; line.addEventListener(MouseEvent.ROLL_OVER, onMouseEvent); line.addEventListener(MouseEvent.ROLL_OUT, onMouseEvent); line.addEventListener(MouseEvent.CLICK, onMouseEvent); line.addEventListener(MouseEvent.MOUSE_DOWN, onMouseEvent); line.addEventListener(MouseEvent.MOUSE_UP, onMouseEvent); lineNumbers[line] = ++i; line = block.createTextLine(line, 125); } } private function createTextElement(text:String, size:int):TextElement { return new TextElement(text, new ElementFormat( new FontDescription("Times", FontWeight.NORMAL, FontPosture.NORMAL, FontLookup.EMBEDDED_CFF), size) ); } private function onMouseEvent(event:MouseEvent):void { var target:TextLine = TextLine(event.target); renderNotification(lineNumbers[target] + ': ' + event.type); } private var lineHolder:Sprite = new Sprite(); private function renderNotification(text:String):void { while(lineHolder.numChildren) lineHolder.removeChildAt(0); var block:TextBlock = new TextBlock( new TextElement(text, new ElementFormat( new FontDescription("Times", FontWeight.NORMAL, FontPosture.NORMAL, FontLookup.EMBEDDED_CFF), 18) ) ); var line:TextLine = block.createTextLine(null, 200); while(line) { lineHolder.addChild(line); line.y = line.height; line = block.createTextLine(line, 200); } } [Embed(source="assets/Times New Roman.ttf", embedAsCFF="true", fontFamily="Times")] private var times:Class; } }