Chapter 18 Example 6

by actionscriptbible
♥0 | Line 71 | Modified 2009-12-14 12:30:14 | MIT License
play

ActionScript3 source code

/**
 * Copyright actionscriptbible ( http://wonderfl.net/user/actionscriptbible )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/xlLn
 */

package {
  import flash.display.Loader;
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.net.URLLoader;
  import flash.net.URLRequest;
  import flash.utils.setTimeout;
  
  import flashx.textLayout.compose.StandardFlowComposer;
  import flashx.textLayout.container.ContainerController;
  import flashx.textLayout.container.ScrollPolicy;
  import flashx.textLayout.conversion.ITextImporter;
  import flashx.textLayout.conversion.TextConverter;
  import flashx.textLayout.edit.EditManager;
  import flashx.textLayout.elements.TextFlow;
  import flashx.undo.UndoManager;

  public class ch18ex6 extends Sprite {
    protected var textFlow:TextFlow;
    protected var editManager:EditManager;
    public function ch18ex6() {
      var loader:URLLoader = new URLLoader(new URLRequest(
        "http://actionscriptbible.com/files/alice-ch2-tlf.xml"));
      loader.addEventListener(Event.COMPLETE, onLoadComplete);
    }
    protected function onLoadComplete(event:Event):void {
      var tlfMarkup:String = URLLoader(event.target).data;
      var flowComposer:StandardFlowComposer = new StandardFlowComposer();
      var importer:ITextImporter = 
        TextConverter.getImporter(TextConverter.TEXT_LAYOUT_FORMAT);
      importer.throwOnError = true;
      textFlow = importer.importToFlow(tlfMarkup);
      textFlow.flowComposer = flowComposer;
      
      var l:Loader = new Loader(); addChild(l);
      l.x = 10; l.y = 130;
      l.load(new URLRequest("http://actionscriptbible.com/files/alice-1.jpg"));
      
      var sprite:Sprite, container:ContainerController;
      sprite = new Sprite(); addChild(sprite);
      sprite.x = 10; sprite.y = 10; 
      container = new ContainerController(sprite, 430, 120);
      container.horizontalScrollPolicy = ScrollPolicy.OFF;
      container.verticalScrollPolicy = ScrollPolicy.OFF;
      flowComposer.addController(container);
      
      sprite = new Sprite(); addChild(sprite);
      sprite.x = 210; sprite.y = 130;
      container = new ContainerController(sprite, 230, 170)
      container.horizontalScrollPolicy = ScrollPolicy.OFF;
      container.verticalScrollPolicy = ScrollPolicy.OFF;
      flowComposer.addController(container);
      sprite = new Sprite(); addChild(sprite);
      
      sprite.x = 10; sprite.y = 310;
      container = new ContainerController(sprite, 430, 300)
      container.horizontalScrollPolicy = ScrollPolicy.OFF;
      container.verticalScrollPolicy = ScrollPolicy.OFF;
      flowComposer.addController(container);

      editManager = new EditManager(new UndoManager());
      textFlow.interactionManager = editManager;      
      textFlow.flowComposer.updateAllControllers();
      
      setTimeout(demonstrateEdits, 2000);
    }
    private function demonstrateEdits():void {
      try {
        var pointer:* = textFlow.getChildAt(0); //textFlow>_div_
        pointer = pointer.getChildAt(1); //textFlow>div>paragraph1, _paragraph2_
        editManager.selectRange(pointer.getAbsoluteStart() + 1, 40);
        editManager.applyLink("http://actionscriptbible.com");
        textFlow.flowComposer.updateAllControllers(); 
      } catch(error:Error) {
        trace("Error editing: " + error.toString());
      }
    }
  }
}