[AS3]使用RSL进行AS瘦身编程

简介: ApplicationDomain SWF 文件中的所有代码被定义为存在于应用程序域中。 主应用程序就在当前的应用程序域中运行。 系统域中包含所有应用程序域(包括当前域),这意味着它包含所有 Flash Player 类。

ApplicationDomain

SWF 文件中的所有代码被定义为存在于应用程序域中。 主应用程序就在当前的应用程序域中运行。

系统域中包含所有应用程序域(包括当前域),这意味着它包含所有 Flash Player 类。

除系统域以外,每个应用程序域都有一个关联的父域。 主应用程序的应用程序域的父域是系统域。 已加载的类仅在其父级中没有相关定义时才进行定义。 不能用较新的定义覆盖已加载的类定义。

img_8756279052648bb55096739ff353089c.jpgimg_b802929e6d8aa579ccd92da5cb2afd85.jpgimg_dabc6a9b8f3099094e7eab81eda61de3.jpg

[AS3]使用RSL进行AS瘦身编程

作者:弃天笑 日期:2008-05-04

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中刚建立的)
n200853235233.jpg
4.接着编译就行了.....看生成AswingDll,用破解软件看看,是不是多了你需要的代码了:),大小有400多K,包括了awing的代码了

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

具体的我就先不写了,可以参考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();

        }
    }
}

效果图
22008424233123.jpg

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


img_d891d4c54f980aad1ee8e4c6de84a743.jpg img_ee3a263f93b28be5815b6467cb5449ba.jpg
相关文章
|
7月前
|
人工智能 自然语言处理 安全
如何利用FuncGPT告别繁琐的开源代码调试
作为一名开发人员,您是否曾经在浩如烟海的开源社区中搜索代码,然后花费大量时间测试、调试,最后才发现这些代码并不符合您的需求?专注Java生成AI函数的FuncGPT(慧函数)就像您的私人编程助手,只需输入你的需求,就能提供符合要求的函数,让你告别繁琐的搜索、测试和调试,迈向高效的开发之旅。
|
uml 开发者 Windows
推荐5款冷门小工具,看一看有没有你喜欢的?
每个人的电脑中都会安装很多软件,可能还保留着很多不为人知的冷门软件。不过虽然冷门,但绝不意味着低能,相反很多冷门软件的功能十分出色。闲话少说,接下来我就给大家推荐5款冷门小工具,看一看有没有你喜欢的。
144 0
推荐5款冷门小工具,看一看有没有你喜欢的?
|
传感器
时隔这么长时间,我把常用的功能整理好了,再来感受VueUse工具库的优雅吧~
时隔这么长时间,我把常用的功能整理好了,再来感受VueUse工具库的优雅吧~
时隔这么长时间,我把常用的功能整理好了,再来感受VueUse工具库的优雅吧~
|
程序员
程序员提高文件查看效率的神器
程序员提高文件查看效率的神器
129 0
程序员提高文件查看效率的神器
|
安全 UED
陪玩平台源码具有哪些优点,开发怎样实现
陪玩平台源码不仅实现陪玩下单、多人聊天等功能,还实现了用户直播、礼物打赏、快速匹配等功能,丰富系统功能,满足用户更多需求。
|
人工智能 安全 程序员
程序真香定律:源码即设计
  我们经常谈论架构,讨论设计,却甚少关注实现和代码本身,架构和设计固然重要,但要说代码本身不重要,我不同意,Robert C.Martin大叔也不同意,Martin认为“源码即设计”。   在讨论具体的实施细则之前,我们不妨讨论一下什么是好代码?萝卜特 C.Martin认为:衡量代码质量的唯一标准是:WTF/min,也就是review代码的时候每分钟说“握草”的次数。这个定义虽有辱斯文,但粗野中不失奔放,调皮中又蕴含哲理。   好的代码如同文笔优美的散文,行云流水,赏心悦目,阅读的时候,如沐春风,带给人愉悦与启迪。   好的代码犹如构思精巧的小说,它或许不够平铺直述,却足够引人入胜
106 0
|
弹性计算 编解码 人工智能
游戏打包过程枯燥且工作繁琐,如何提升打包效率?看鲸旗游戏的新思路
为了简化业务流程,实现高性能和成本优化,鲸旗游戏最终选择使用阿里云 Serverless 函数编排与函数计算的方式来执行打包操作,完美解决痛点。
3025 1
游戏打包过程枯燥且工作繁琐,如何提升打包效率?看鲸旗游戏的新思路
比心源码如何开发,这个功能要会实现
说到比心源码,不如讲讲比心源码实现聊天室功能该怎么做?
比心源码如何开发,这个功能要会实现
|
监控 Java 应用服务中间件
强烈推荐|你不可不知的性能优化内幕
一. 基本概念 1. 软件系统质量特性 安全性:同时兼顾向合法用户提供服务,以及阻止非授权使用软件及资源的能力。 健壮、可靠:软件系统在一定的时间内无故障运行的能力、容错能力、恢复能力 可扩展、可维护、可移植:正在运行的软件系统以适应新需求、变化了的需求的难易程度 可用性、易用性、性能:性能是指软件及时提供相应服务的能力。
1976 0
|
Android开发
09.源码阅读(从Android源码角度入手自己实现热修复)
首先我们要知道Activity是如何启动的,在文章https://www.jianshu.com/p/bd5208574430中我们已经看了Activity启动的源码,https://www.
1209 0