[AS3]使用RSL进行AS瘦身编程 来源:弃天笑(soda.C)的专栏作者:弃天笑 2008-05-12 【大 中小】
RSL是什么??RSL是 Runtime Shared Library的简称。我个人的理解时是在swf编译的时候,不把在该swf中使用的一些类库 编译进swf中去,而是在该swf运行的时候动态加载,该swf是要使用的类库,从而达到减小swf体积的目的。 做as编程的人都知道,如果每个swf都引用了同一个类的话,那么你编译每个swf的时候,都会把那个类编译进去,也是就是说,无形中对整个应用而言,就多了几份类库而增大了内容 例 如你有 a.swf,b.swf,c.swf,同时引用了sodaTest.as这个类,传统的做法是每个swf都把sodaTest编译进去。而使用 RSL技术的话,则把sodaTest.as这个类编译进一个特殊的swf进去(lib.swf,该swf包含sodaTest),在a,b,c运行的时 候,把lib.swf这个swf加载进去就可以了。三个swf共享一个,从而减小了体积 下面,看具体的设置步骤吧(下面提供的方法只是多种方法的其中之一:),使用工具是FlexBuilder,以asiwng代码库为例子
首先我们需要制作一个被多个swf需要加载swf代码库 1.把需要的代码打包进一个swf里去,该步骤前需要一个你需要打包进代码库的swc (可以在FB中建立一个Flex Library Project,利用把你需要的代码生成swc) 新建个Flex Library Project为Aswing
2.新建一个AswingDll的ActionScript Project项目 新建个AswingDll
3.接着在AswingDll项目属性中,增加命令,在ActionScprit Compiler 增加下面的命令 -include-libraries E:/workspace/FlexProject/Aswing/bin 其中E:/workspace/FlexProject/Aswing/bin是你需要做加载的代码库的swc的目录位置 (我这里是用我自己设置的目录去生成,而不是在flex中刚建立的)
4.接着编译就行了.....看生成AswingDll,用破解软件看看,是不是多了你需要的代码了:),大小有400多K,包括了awing的代码了
5.接着新建一个AswingTest的ActionScript Project项目,用来使用这个AswingDll 在AswingTest这个项目属性还需要做一些设置的,在Library Path中,添加aswing代码库或者aswing的swc
看图片中蓝色的部分,双击它,弹出下面的界面,选择Exteral这个选项,再确定就可以了
做完这些步骤后,就可以去编译自己的程序啦
具体的我就先不写了,可以参考www.flashdll.org,里面有详细的例子 (明天我再出一个使用例子) 有什么问题,就到www.actionscript3.cn提问吧 呵呵
之前的代码修改了一下 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;
import org.aswing.AsWingManager; import org.aswing.JFrame; [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 ...{ AsWingManager.initAsStandard(this); var frame:JFrame = new JFrame(this,"测试反射"); frame.setSizeWH(400,300); frame.show();
} } }效果图
很明显,可以看到体积非常小, 文章来自: 闪客居(www.flashas.net) 详文参考:http://www.flashas.net/html/flashas/aschuji/AS_3_0/20080512/3071.html