利用反射调用另一个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对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值