http://www.puxiao.com/?p=463
最近连着看了关于RSL的文章,我也说说我现在认识的RSL。 Y.Boy 的 创建自己的RSL
Aedis.Ju 的 动态加载
Application
关于AS里的RSL机制以及好处我就不说了,我说说复杂项目中的使用方法。
算是对他们文章的一个补充延伸吧。
我准备说的使用RSL方法,简单的说就是:事情分两步走 (1)flex
编写代码的时候:使用设置为不嵌入代码的.swc类库
(2)swf
运行的时候:加载包含模块、类、代码、嵌入图片
、声音等资源的.swf文件
-------------------
如果你明白我上面的意思,并且在心里想说:我早就是这样做的!
呵呵,那也不需要再往下面看了^-^
---------------------------
<一>使用swf作为类库,常用方法存在的问题
先说说上面两位文章里讲的使用方法(以Y.Boy里的代码为例):
// 获得类引用
var Adobe
Class:Class = getDefinitionByName("cn.ria
home.class
es::Adobe") as Class;
// 新建实例
var adobe:* = new AdobeClass();
简单的项目可以这样做,相对复杂点的项目,比如多个模块开发
,这样做就存在问题了:
1 想获得类引用,必须知道并且写正确类的命名空间以及类的类名
(写起来肯定麻烦,并且你拼写错了,编译
器也不会报错,只有当运行的时候才会发现)
2 新建实例只能通过new 的方式,某些实现单例的方式就不能用
(如果AdobeClass类是单例,你想获得单例,你写AdobeClass.getInstance()编译器就报错了)
3 编写代码时没有代码提示,用起来麻烦。
并且还有...此出省略一万五千字
<二>介绍RSL类库的新使用方法
(1) 先获得RSL的源材料:swc和swf
1 把你的类、资源等做成swc(或者是别人开发的swc)
最简单的方法是Flex里新建Library project工程
2 新建一个as工程,就一个任务:引入刚才制作好的swc的各个类及资源
发布这个工程,获得swf
(2) 编写项目模块(ActionScript Modules)代码时使用swc
1 在你的项目里,设置项目属性,添加外部库路径,把得到的swc添加进来
Properties -> ActionScript Build Path -> Library path -> add SWC
2 设置swc的连接类型为外部
(这是最重要的一步)
点刚才加入的swc前面的'+'号,双击 Link Type: Merged into code 这一项,在弹出的窗口中,将Link Type设置成External。
这样设置swc,你编写代码的时候,你的类,你的资源,就可以像正常导入进来一样,自由使用。
编写的时候也有代码提示,甚至你的代码里都出现了 import cn.riahon.classes.Adobe,类不管是什么随便用,但在发布的时候却不会把这个类以及swc里所有的资源类编译进去。
(发布的时候其实不存在这些类,可以理解成暂时性的“欺骗”了flash
)
(3) 运行时加载swf获得类库
主swf运行的时候,使用Loader加载包含类库的 swf Libs文件(第一步得到的那个swf),从而引入libs里的类。
你可以觉定加载的类库所放入的作用域ApplicationDomain,以便在不用的时候可以把加载的类给删除掉。
加载完swf以后(Event.INIT事件
后),你就可以使用这个各个类。
如果是模块开发,这个时候可以再去加载使用到这些类的模块。
(总之,一定确保在没有加载完之前千万不要使用)
<完> 我说的使用方法就是这样了
-----------------------------------
说明:以上绝非我自己发现的方法,好多“仙人”都已经这样用了...
我是怎么知道的?翻看《ActionScript3 编程精髓》的第767页以及同事 张成亮
给我讲的。 |
相关推荐
Flex RSL(Runtime Shared Libraries)是Adobe Flex框架中的一种机制,用于优化应用程序的加载和运行时性能。RSLs是一组预编译的库,包含了常见的Flex组件和类,允许多个应用程序共享这些资源,减少网络传输的数据量...
RSL(Resources Share List)类库是一个用于资源共享和...通过深入学习Resources Share List.doc中的内容,并结合RSL.dll和RSL.xml的实际应用,开发者能够有效地集成RSL库到他们的项目中,提升软件的可扩展性和协作性。
目录: 第1篇 基础知识篇 第1章 走进Flex世界 第2章 Flex基础知识 ... 第18章 RSL运行时共享库 第5篇 Flex通信篇 第19章 与JavaScript/AJAX通信 第20章 Flex与PHP通信 第21章 Flex与Java EE通信
标题中的“rsl.rar_RSL ...对于想要学习或使用属性约减技术的人来说,这个“rsl.rar”压缩包可能是一个宝贵的资源,它提供了C语言编写的高效算法,并结合MATLAB的易用性,使得在实际项目中应用这些算法变得更加便捷。
**RSL**(Runtime Shared Libraries)是Flex中的一种技术,它允许开发者将应用程序中的某些部分封装成共享库,并在运行时按需加载这些库。这种方式可以显著减少初始加载时间,并提高应用性能。 **使用方法**: 1. *...
- 对于SWF体积大的问题,可以使用Module动态加载和RSL(Runtime Shared Libraries)共享库来减少下载量。 - 对于处理速度慢,可以优化异步通信,提升用户体验,例如通过进度条显示或异步加载。 8. Flash与Flex的...
RSL的使用方法通常涉及在Flex项目中声明依赖关系,并在运行时动态加载这些库。 ### 4. SWC是什么,如何创建一个SWC? SWC是Shared Library Container的缩写,用于存储编译后的ActionScript类、资源和其他编译后的...
RSL是一种运行时组件共享库,允许同域内的项目共享资源,从而减小项目文件大小。通过设置Flex构建路径,将框架链接方式改为"runtime shared library (RSL)",Flex编译器会将框架文件分离出来,形成独立的`.swf`和`....
RSL(Runtime Shared Libraries)是一种在运行时动态加载的共享库,它能够提高应用程序的性能和内存使用效率。相比于静态链接库(SWC文件),RSL的优势在于减少应用程序的初始下载时间和文件大小,因为它只需要在...
3. **RSL(Runtime Shared Libraries)**:RSL是动态链接库,运行时由Flash Player加载,以减少应用程序SWF的大小和下载时间。它们提高了内存效率,并允许多个应用共享同一代码库,只需下载一次。配置RSL涉及修改...
- 使用Runtime Shared Libraries (RSL) 分离库文件,提高加载效率。 - 异步处理远程调用,提供反馈以改善用户体验。 8. Flex与Flash协同开发: - 当需要Flex SDK功能时,建立Flex工程,使用SWC作为Flash的皮肤。...
OTIS-RSL串行协议是一种远程串行链接协议,通常用于电梯控制系统中的通信。以下为从标题、描述、标签以及部分内容中提取出的知识点。 1. OTIS-RSL串行协议概述: OTIS-RSL协议是一种远程串行通信协议,它允许电梯...
在本文中,我们将深入探讨"RSL10 射频测试资源"的相关知识点,主要涉及射频技术、蓝牙低功耗(BLE)通信以及RSL10芯片的应用。RSL10是一款高度集成的无线微控制器,专为超低功耗蓝牙应用而设计。其在射频测试中扮演...
除了基本的反射使用外,Flex还支持更复杂的场景,如在Module和RSL(Runtime Shared Library)中使用反射。Module允许在应用程序运行时动态加载和卸载组件,而RSL则提供了按需加载库的功能,两者都涉及到了动态加载类...
普通SWC在编译时会嵌入到SWF中,而RSL类型的库则利用运行时加载机制,允许在不增大SWF体积的情况下复用代码。 在Flex项目中,开发者可以修改html-template目录下的模板文件,影响生成的HTML输出。这对于定制界面...
3. **缓存框架**:Flex 3引入了运行时共享库(RSL)支持,允许将Adobe签名的框架缓存到Flash Player的缓存中。这使得多个Flex应用可以共享已下载的库,减少了重复下载,提高了加载速度。 4. **模块化设计**:将大型...
对于SWF体积大的问题,可以使用模块化(Module)加载和运行时共享库(RSL)来减少初始加载时间。对于处理速度慢,可以通过优化异步通信,如分批加载数据,提供进度提示,使用户在等待期间可以进行其他操作。 8. ...
2.5 Flex中的组件化编程 2.5.1 认识Flex组件和组件容器 2.5.2 组件生命周期与布局 2.5.3 组件的失效机制 2.5.4 使用ActionScript创建自定义组件 2.6 异步调用 2.6.1 异步调用导致模型数据不一致...
2.5 Flex中的组件化编程 2.5.1 认识Flex组件和组件容器 2.5.2 组件生命周期与布局 2.5.3 组件的失效机制 2.5.4 使用ActionScript创建自定义组件 2.6 异步调用 2.6.1 异步调用导致模型数据不一致...