正如已经指出的,您不能将 RSL 与文档类一起使用。但是,您可以将类放在 RSL 中并在运行时加载这些类,可能会实现您想要的。
这是一个非常简单的例子:
1. 创建 RSL 资产:
假设您有一个不时更改的类,并且您想在运行时加载它的功能:
//TestyMcTestFace.as
package {
public class TestyMcTestFace {
public static function go():String{
return "I'm Testy McTestFace";
}
}
}
所以,你可以做的是在 FlashPro/AdobeAnimate CC 中创建一个新的 AS3 项目。链接您的类文件,以便您的项目找到它(在这种情况下,我只是将我的 TestyMcTestFace.as 放在与我创建的新 .fla 相同的目录中)。
在时间线代码中添加对要包含的类的引用。如果没有这个引用,类将不会在生成的 swc/swf 中导出。
所以对于这种情况,我有一个新的 AS3 项目,在时间轴的第一帧上只有一行:
TestyMcTestFace;
现在,转到您的发布设置,并使其仅检查Flash (swf)和SWC。
发布这个新项目(您现在拥有一个 swf/swc,您可以将其用作其他应用程序的 RSL)。
2. 设置您的其他应用程序以使用 swf/swc 作为 RSL。
在您现有的 Flash 项目中,转到“高级 Actionscript 设置”(单击发布设置中“Actionscript 3.0”旁边的扳手图标)。
单击库路径选项卡,单击加号按钮,然后单击“浏览到 SWC 文件”按钮(当前它是一个带有 flash 'f' 的图标)。从上一步中找到您的 swc 文件。
现在,突出显示您的新条目,单击信息图标(链接选项)。将其从“合并到代码”更改为“RSL”。然后添加 swf 文件的路径(该应用程序运行时的路径)。
现在,在您的应用程序中,您可以引用 RSL 中的类。所以如果我们这样做:
trace(TestyMcTestFace.go());
你应该得到输出“I'm Testy McTestFace”。
FlashPro 将自动为您加载 RSL。但请注意,如果您不让 flash 自动预加载您的应用程序,它将不会立即可用。
如果您从第一步更改并重新导出了 swc/swf,则这些更改应在您再次运行现有 swf 时反映出来(无需重新编译)。
注意事项:
小心 RSL 中的代码。很容易获得冲突的课程。作为最佳实践,仅将完全独立/解耦的代码放入 RSL 中。应避免包含大量导入的代码。如果您在加载 RSL 的编译 swf 中不引用具有相同名称的类,那也是最好的。
还要记住,如果不是来自同一个域,RSL 可能会有 sanbox/安全限制。