读书人

运用RSL进行AS瘦身编程

发布时间: 2012-12-19 14:13:14 作者: rapoo

使用RSL进行AS瘦身编程

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
运用RSL进行AS瘦身编程

2.新建一个AswingDll的ActionScript?Project项目
新建个AswingDll
运用RSL进行AS瘦身编程

3.接着在AswingDll项目属性中,增加命令,在ActionScprit?Compiler?增加下面的命令
-include-libraries?
E:\workspace\FlexProject\Aswing\bin
其中E:\workspace\FlexProject\Aswing\bin是你需要做加载的代码库的swc的目录位置
(我这里是用我自己设置的目录去生成,而不是在flex中刚建立的)
运用RSL进行AS瘦身编程
4.接着编译就行了.....看生成AswingDll,用破解软件看看,是不是多了你需要的代码了:),大小有400多K,包括了awing的代码了

5.接着新建一个AswingTest的ActionScript?Project项目,用来使用这个AswingDll
在AswingTest这个项目属性还需要做一些设置的,在Library?Path中,添加aswing代码库或者aswing的swc
运用RSL进行AS瘦身编程
看图片中蓝色的部分,双击它,弹出下面的界面,选择Exteral这个选项,再确定就可以了
运用RSL进行AS瘦身编程
做完这些步骤后,就可以去编译自己的程序

具体的我就先不写了,可以参考www.flashdll.org,里面有详细的例子
(明天我再出一个使用例子)
有什么问题,就到www.actionscript3.cn提问吧
呵呵

之前的代码修改了一下
<css.shtml' target='_blank' title = 'div视频教程'>div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: rgb(230,230,230) 0% 50%; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 95%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">

运用RSL进行AS瘦身编程package?
运用RSL进行AS瘦身编程运用RSL进行AS瘦身编程...{
运用RSL进行AS瘦身编程????import?flash.display.Sprite;
运用RSL进行AS瘦身编程????import?flash.display.Loader;????
运用RSL进行AS瘦身编程????import?flash.events.Event;
运用RSL进行AS瘦身编程????import?flash.system.LoaderContext;
运用RSL进行AS瘦身编程????import?flash.net.URLRequest;
运用RSL进行AS瘦身编程????import?flash.system.ApplicationDomain;
运用RSL进行AS瘦身编程????import?flash.utils.getDefinitionByName;
运用RSL进行AS瘦身编程
运用RSL进行AS瘦身编程????import?org.aswing.AsWingManager;
运用RSL进行AS瘦身编程????import?org.aswing.JFrame;
运用RSL进行AS瘦身编程????
运用RSL进行AS瘦身编程????[SWF?(width=800,?height=600)]
运用RSL进行AS瘦身编程????
运用RSL进行AS瘦身编程????public?class?Main?extends?Sprite?
运用RSL进行AS瘦身编程运用RSL进行AS瘦身编程????...{
运用RSL进行AS瘦身编程????????private?var?loader:Loader;
运用RSL进行AS瘦身编程????????public?function?Main()?
运用RSL进行AS瘦身编程运用RSL进行AS瘦身编程????????...{
运用RSL进行AS瘦身编程????????????loader?=?new?Loader();
运用RSL进行AS瘦身编程????????????loader.contentLoaderInfo.addEventListener(Event.COMPLETE,?onLoader);
运用RSL进行AS瘦身编程????????????loader.load(new?URLRequest("dll/AsWingDLL_1_3_0.swf"),?
运用RSL进行AS瘦身编程????????????????????new?LoaderContext(false,?ApplicationDomain.currentDomain));
运用RSL进行AS瘦身编程????????}
运用RSL进行AS瘦身编程????????
运用RSL进行AS瘦身编程????????private?function?onLoader(event:Event):void
运用RSL进行AS瘦身编程运用RSL进行AS瘦身编程????????...{
运用RSL进行AS瘦身编程????????????AsWingManager.initAsStandard(this);
运用RSL进行AS瘦身编程????????????var?frame:JFrame?=?new?JFrame(this,"测试反射");
运用RSL进行AS瘦身编程????????????frame.setSizeWH(400,300);
运用RSL进行AS瘦身编程????????????frame.show();
运用RSL进行AS瘦身编程
运用RSL进行AS瘦身编程????????}
运用RSL进行AS瘦身编程????}
运用RSL进行AS瘦身编程}

效果图
运用RSL进行AS瘦身编程

很明显,可以看到体积非常小,

读书人网 >编程

热点推荐