我们的 Flash 项目具有以下结构。两个带有图形资源(符号)的 FLA 文件,使用 SWC 导入到纯 AS3 代码项目中。
有一些符号在 ui.fla 和 login.fla 中都使用,因此我们希望将它们放入共享库中,如下所示。
问题是我们不想在例如中使用shared.fla的符号ui.fla 的代码,但是在创作环境中,这样我们就可以将符号从shared.fla 拖到ui.fla 的符号中(无需复制)。这可能吗?
最佳答案
可以通过远程共享库
(RSL) 共享资源。
但是请小心:我在生产中没有见过这种方式,这只是我几年前的实验。
这是一个例子:
- 创建包含共享资源的文档。让它命名为“shared_lib”
- 创建一些符号。为 RSL 做好准备:
- 在 Flash IDE 中选择“库”->“您的符号”(右键单击)->“属性...”
- 选择
导出为 ActionScript
和在第 1 帧中导出
,输入符号名称 - 选择
导出以进行运行时共享
。输入该 swf 的名称:“shared_lib.swf” 确定
发布
到 SWF 和 SWC
所以,现在我们有了我们的图书馆。让我们创建一些将使用它的 Assets
- 创建另一个文档,我们将其命名为“mainui”。
- 返回“shared_lib”,在
Library
中选择导出的符号,CTRL + C
(或右键单击,复制) - 返回刚刚创建的“mainui”,粘贴到
Library
。 - 创建一些其他符号,将其导出为 ActionScript 并将我们导入的符号放入其中
- 编译它,导出为 SWC、SWF。
在这一步,我们有 shared_lib.swf
、shared_lib.swc
和 mainui.swc
。在 mainui
中,我们也可以使用外部资源。您可以用相同的方式创建其他 Assets 。
让我们讨论一下将使用我们的资源的项目设置。
那么,我们现在到底拥有什么? Mainui.swc
具有包含另一个'virtual' 符号的符号。如果您尝试使用某些探查器在浏览器中加载 mainui.swf
,您会看到,首先加载 mainui.swf
,然后加载 shared_lib .swf
.
但是,如果您尝试创建一些项目并包含 mainui.swc
,您将收到 undefined symbol 的错误,因为所有具有 mainui 的项目 - 只是对来自共享库的符号的虚拟引用。
要解决此问题,您必须在项目中完全包含 shared_lib.swc
。在这种情况下,您将拥有:
- 通过库路径指令:可选包含
mainui.swc
- 通过include-libraries指令:完全包含
shared_lib.swc
现在,它会起作用了。
希望,这会有所帮助。
关于actionscript-3 - Flash 中的编译时共享库符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12604659/