package { import flash.display.Sprite; import flash.events.EventDispatcher; import flash.events.MouseEvent; import flash.text.engine.*; import flash.utils.getTimer; [SWF(width="285", height="55")] public class SimpleDemo4 extends Sprite { public function SimpleDemo4() { addChild(lineHolder); lineHolder.x = 80; lineHolder.y = 5; addChild(lineHolder2); lineHolder2.x = 80; lineHolder2.y = 25; var dispatcher:EventDispatcher = new EventDispatcher(); dispatcher.addEventListener(MouseEvent.MOUSE_DOWN, onMouseMirrorEvent); var block:TextBlock = new TextBlock(new TextElement('Click Me.', new ElementFormat( new FontDescription("Times", FontWeight.NORMAL, FontPosture.NORMAL, FontLookup.EMBEDDED_CFF), 18), dispatcher)); var line:TextLine = block.createTextLine(null, 75); var _y:Number = 0; while(line) { addChild(line); _y += line.height; line.y = _y; line.addEventListener(MouseEvent.MOUSE_DOWN, onMouseLineEvent); line = block.createTextLine(line, 75); } } private var lineHolder:Sprite = new Sprite(); private var lineTime:Number = 0; private function onMouseLineEvent(event:MouseEvent):void { lineTime = getTimer(); var block:TextBlock = new TextBlock( new TextElement(event.type + ' from line', new ElementFormat( new FontDescription("Times", FontWeight.NORMAL, FontPosture.NORMAL, FontLookup.EMBEDDED_CFF), 14) ) ); while(lineHolder.numChildren) lineHolder.removeChildAt(0); var line:TextLine = block.createTextLine(null, 200); var _y:Number = 0; while(line) { lineHolder.addChild(line); _y += line.height; line.y = _y; line = block.createTextLine(line, 200); } } private var lineHolder2:Sprite = new Sprite(); private function onMouseMirrorEvent(event:MouseEvent):void { var block:TextBlock = new TextBlock( new TextElement(event.type + ' from mirror, time between dispatches: ' + (getTimer() - lineTime) + 'ms', new ElementFormat( new FontDescription("Times", FontWeight.NORMAL, FontPosture.NORMAL, FontLookup.EMBEDDED_CFF), 14) ) ); while(lineHolder2.numChildren) lineHolder2.removeChildAt(0); var line:TextLine = block.createTextLine(null, 200); var _y:Number = 0; while(line) { lineHolder2.addChild(line); _y += line.height; line.y = _y; line = block.createTextLine(line, 200); } } [Embed(source="assets/Times New Roman.ttf", embedAsCFF="true", fontFamily="Times")] private var times:Class; } }