`
vu060vu
  • 浏览: 12602 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

利用反射调用另一个swf里的代码库

 
阅读更多

利用反射调用另一个swf里的代码库
2011年02月19日
  [转自]http://wgcode.javaeye.com/blog/851691
  或许我还是对flash了解不够深,虽然用它好多年了....还没有发现有更好的办法,例如flashDll,我就不知道怎么用才更好,可以达到他说的那样的可以使文件小很多。
  他的做法是把很多在多个flash中使用的代码打包进一个swf里面去,然后给不同的swf调用,从而达到减小体积的目的。
  但是我觉得即使是加载进行,但是在代码里进行了声明,最后还是会把代码编译进来,结果是体积还是没有减小.....(或许我这样说还是会有很多人不明白的.....具体看代码和效果吧)
  Java代码
  package   {      import flash.display.Sprite;      import flash.display.Loader;    import flash.events.Event;      import flash.system.LoaderContext;      import flash.net.URLRequest;      import flash.system.ApplicationDomain;      import flash.utils.getDefinitionByName;            [SWF (width=800, height=600)]            public class Main extends Sprite       {          private var loader:Loader;          public function Main()           {              loader = new Loader();              loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoader);              loader.load(new URLRequest("dll/AsWingDLL_1_3_0.swf"),                       new LoaderContext(false, ApplicationDomain.currentDomain));          }                    private function onLoader(event:Event):void          {              var mangerClass:Class = getDefinitionByName("org.aswing.AsWingManager") as Class;              mangerClass["initAsStandard"](this);                            var frameClass:Class = getDefinitionByName("org.aswing.JFrame") as Class;              var frame:Object = new frameClass(this,"测试反射");              var paneClass:Class = getDefinitionByName("org.aswing.JScrollPane") as Class;              var pane:Object = new paneClass();              var aertClass:Class = getDefinitionByName("org.aswing.JTextArea") as Class;              var art:Object = new aertClass();                            //增加多行文本              pane["append"](art);              frame["setContentPane"](pane);              frame["setSizeWH"](400, 300);              frame["show"]();          }      }  }  
  很明显,可以看到体积非常小,
  当然,有个AsWingDLL_1_3_0.swf文件是200k的,当然,你也可以加载网络上的代码库
  如果不利用反射,直接在flash里进行声明,那么代码会变得大很多,有心人可以重写onLoader方法里的代码。不利用反射,直接new对象
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics