実行時に反射でロードされたswfのClassを取得

3185 ワード

package {

    import flash.display.MovieClip;

    import flash.display.Loader;

    import flash.net.URLRequest;

    import flash.events.Event;

    import flash.display.DisplayObject;

    import flash.system.ApplicationDomain;

    import flash.utils.getDefinitionByName;

    /*

     *

     *  swf Class

     */

    public class Main extends MovieClip {

        private var loader : Loader = new Loader();

        private var path : URLRequest = new URLRequest("Test.swf"); // swf

        public function Main() {

            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);

            loader.load(path);

        }

        private function loaded(evt : Event) : void{

            trace(evt.target);

            var swf : DisplayObject = evt.target.content as DisplayObject;

            addChild(swf);

            

            var classRef : Object = swf.loaderInfo.applicationDomain.getDefinition("Test"); // swf Class 

            var ff : DisplayObject = new classRef()as DisplayObject; // Test 

            addChild(ff);

            ff.x = 100;

            

        }

    }

}