如何设置RSL(运行时共享库​​)

时间:2011-02-08 19:48:46

标签: flash actionscript-3 rsl

堆栈

我在设置一个新项目(电子学习)方面遇到了一些麻烦,我认为这个项目将从RSL中受益匪浅。
我的情况是这样的:

Main.fla - 壳牌
Scenes.fla - 我会在一分钟内解释这一点 Navigation.fla - 某种GUI
很多Fla文件 - 课程

Main 将是第一部要实例化的电影,然后,从此处所需的全部内容将是下载

除了“ Architecture ”(即主要,场景,导航和一大堆名为 Engine 的类之外,每节课都将放在fla / swf中。 )并将在场景中的运行时添加。

引擎负责处理重复和必要的任务,事件,常用方法,与服务器的通信等。

导航负责处理用户输入,作为导航(下一个/上一课等),然后将其传递给引擎,它将操纵场景(及其子项)。

嗯,我也有一些限制:
每个将传递给我们客户的swf文件需要少于80kb,这意味着我被捆绑了 我无法将整个事情编译为准备交付的包。

随着尺寸的计算,我需要尽可能减轻负荷的手段 所以,这些天我搜索了很多,发现了RSL 我已经创建了一些测试,以便更好地了解如何使用它,当然,还有一个陷阱。

我无法设置我的Flash正确,没有任何成功的“库路径”(在AS3配置下),无法在SWC内编译类...

另一件事是我不会上课,只有建筑学 这些课程将由可能根本不具备AS3(OOP或程序逻辑)知识的人创建 而且我并不倾向于将整个引擎(源代码)交付给任何可能搞乱它的人,制作整个应用程序(应用程序,实际上,我们将生成数百个电子学习)。

我真的认为我需要一些帮助(时间在流逝):

如何有效使用RSL
如何在SWC中捆绑类 如何打包SWC中整个工作所必需的所有内容,然后只交付此SWC

我知道这个帖子有点长,而且我问了很多东西,但是我现在已经把头撞到了键盘上一个星期了,而且还无法管理这个起来。

感谢您的关注......
NemoStein

1 个答案:

答案 0 :(得分:1)

有两种方法可以从fla

执行此操作

一个是导出整个库。 转到您的发布设置,选择仅限Flash,然后在Flash标签下选择Export SWC

http://img593.imageshack.us/img593/8296/swc.png

另一种方法是右键单击库中的项目,然后选择“导出SWC”。如果您对具有大小限制的项目有问题,这可能是要走的路,但我建议导出整个库

将链接ID添加到资源非常重要 您可以通过库中的链接ID列或通过编辑符号属性来输入它。

这些ID必须是唯一的,因为这些是您将通过它们调用的类的名称。创建一个公共前缀是个好主意,因此它们不太可能干扰其他类。

http://img827.imageshack.us/img827/7820/linkageid.png

编译资产后,可以将它们添加到项目的运行时库文件夹中,也可以通过设置或embed标记逐个嵌入它们。我使用FlashDevelop使其变得简单,不确定您使用的是什么,但我确信该选项在那里并且易于访问。


使用图书馆。

我一直在做什么来加载资产(swf在运行时) 为什么run-tim swfs?好吧,如果您正在为内容进行编译,那么您真的无法保持引擎分离。我们的想法是首先加载引擎,然后加载配置,告诉它如何处理库以及在哪里找到每个库。

我的设置/ getup 简化就是这样的

我有一个默认配置xml文件,其中添加了库。为了我的目的,我知道预期的库,所以我有xml标签与preifined id这样:

在代码方面我将库的名称/类型定义为常量静态,并将它们全部放在另一个常量数组中。 我的Data类中有类似的东西 const static var TYPE_COMPONENTS:String =“components”; const static var TYPE_INTERFACE:String =“interface”; const static var TYPES:Array = [TYPE_COMPONENTS,TYPE_INTERFACE];

一旦我加载了confg xml,就可以逐个浏览子节点,看看它们是否与我的TYPES数组下的任何项匹配。我将所有匹配放在一个组加载器中(http://as3.casalib.org/docs/org_casalib_load_GroupLoad.html)我还将所有资源放入一个字典数组中,以便我可以通过静态变量'我定义的资源(Data.TYPE_INTERFACE)

然后我等待装载完成。

加载资产后,我使用getLoader(Data.TYPE_INTERFACE)。getDefinitionmyClassName)来创建类

hasDefinition检查类是否存在而不会抛出错误

是有帮助的

你需要知道类名称是什么来调用它,我使用另一个XML文件来定义要查找的类以及如何处理它们。

我手动生成XML文件,有时需要提醒自己选项是什么,但是可以创建一个可以生成这些文件的AIR应用程序。因为我使用swf作为在PC上运行的引擎,所以无法找到子文件夹中存在的库,就像使用服务器端技术或AIR一样,因此XML是必需的。

希望这有帮助