package {
    import com.adobe.viewsource.ViewSource;

    import flash.display.DisplayObject;
    import flash.display.Graphics;
    import flash.display.Sprite;

    import flashx.textLayout.container.ContainerController;
    import flashx.textLayout.conversion.TextFilter;
    import flashx.textLayout.edit.EditManager;
    import flashx.textLayout.edit.UndoManager;
    import flashx.textLayout.elements.TextFlow;
    [SWF (backgroundColor='#ffffff', width='800', height='600')]
    public class TLFSample03 extends Sprite {

        public function TLFSample03() {
            super();
            ViewSource.addMenuItem(this, "srcview/index.html");

            const MARK_UP:String =
                "<TextFlow xmlns='http://ns.adobe.com/textLayout/2008'>" +
                "<div><p>Hello, World!!</p></div>" +
                "<p>My name is <span fontSize='25'>Taiga.</span></p><p>I'm from Japan.</p>" +
                "</TextFlow>";

            var textFlow :TextFlow    = new TextFlow();
            var target   :MySprite    = addChild( new MySprite() ) as MySprite;
            var width_   :int         = 400;
            var height_  :int         = 200;
            var g        :Graphics    = target.graphics;

            //マークアップのインポート
            textFlow = TextFilter.importToFlow(MARK_UP, TextFilter.TEXT_LAYOUT_FORMAT);

            //編集かつアンドゥできるようにする
            textFlow.interactionManager = new EditManager( new UndoManager() );

            //コントローラの定義
            textFlow.flowComposer.addController(
                new ContainerController(target, width_, height_)
            );
            textFlow.flowComposer.updateAllControllers();

            //土台
            target.x = target.y = 100;
            g.beginFill(0xcccccc);
            g.drawRect(0, 0, width_, height_);
            g.endFill();

        }
    }
}
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.Graphics;
class MySprite extends Sprite {
    public function MySprite() {
        super();
    }
    public override function addChild(child:DisplayObject):DisplayObject {
        trace("MySprite.addChild()");
        return super.addChild(child);
    }
    public override function removeChild(child:DisplayObject):DisplayObject {
        trace("MySprite.removeChild()");
        return super.removeChild(child);
    }
    public override function get graphics():Graphics {
        trace("MySprite.graphics");
        return super.graphics;
    }
}