6

使用 Flash CS4,我正在制作一个包含十几个声音和几个音乐曲目的游戏。为了减少发布/编译时间,我将声音和音乐移到了(外部)SWC 中,该 SWC 位于项目的“库路径”中。这有效,但有一个警告......

在我将资产外部化之前,我一直在Sound通过使用getDefinitionByName.

// something like...
var soundSubClass:Class = Class(getDefinitionByName(soundClassName));
var mySound:Sound = new soundSubClass();

但是现在它们位于外部 SWC 中,我需要对类进行“具体”引用才能像这样加载它们,否则它们不会包含在已发布的 SWF 中,并且在getDefinitionByName尝试时会出现运行时错误得到一个不存在的类。

所以,我的问题是:在 Flash Professional CS4 中,有没有办法强制包含库的资源,无论它们是否是静态链接的?

FlashDevelop 有一个编译器选项“SWC 包含库”,这正是我想要的,并且与“SWC 库”选项不同。“SWC 包含库”选项的描述是“将 SWC 文件中的所有类链接到生成的应用程序 SWF 文件,无论它们是否被使用。”

(另外,对我来说重要的是,所有资产都包含在一个编译的 SWF 中。在运行时链接不是我所追求的。)

4

5 回答 5

4

不幸的是,我不这么认为。我希望这在 CS5 中得到修复,但我不会打赌......

当前(加重)标准是在您的 SWC 中有一个清单类,它引用库其余部分中的所有根类:

public class MyLibManifest {
    public static function manifest():void {
         var class1:Class = Class1;
         var class2:Class = Class2;
         // etc...
    }
}

然后,在您的主要 .fla 中的某个地方...

import com.mylibrary.MyLibManifest;

...

var myLibrary:Class = MyLibManifest;
于 2010-06-09T19:52:36.433 回答
3

在 Flash CS4/CS5 中,默认情况下无法将每个类都拉入并嵌入到 SWC 中,但您可以通过以下方式执行此操作:

Flash开发

如您所知,该程序的项目属性具有区分以下各项的编译器选项:

  • SWC 库: “将 SWC 文件链接到生成的间隙 SWF 文件。编译器仅链接到所需的 SWC 文件的那些类中。”
  • SWC 包含库: “将 SWC 文件中的所有类链接到生成的应用程序 SWF 文件,无论它们是否被使用。”

第二个选项“SWC 包含库”可能很有用,因为如果您只是将 FLA 原样编译为 SWC,然后将该 SWC 和您的其他 SWC 作为 SWC 包含库放入 FlashDevelop,它应该将它们编译/合并为一个SWF 将按您的意愿工作。

FlashDevelop 还可以简单地帮助您在 SWC 中构建硬编码的类列表,因为如果您在 SWC 中链接为 SWC 库,它将显示在项目资源管理器中,并且您可以在SWC。您也可以右键单击每个类并选择“插入文档”,它将插入完整的类名。如果你这样做,然后按分号回车,你将得到你的第一类参考。将鼠标悬停在项目设置中的班级列表上,并对列表中的每个班级重复此操作。只需几分钟就可以为数百个课程执行此操作,这使得创建这样的列表更容易。如果这个东西可以让你一次插入多个,它会更快,但它似乎没有。

您说您无缘无故不感兴趣的唯一其他选择是运行时共享库​​ (RSL)。单独加载文件真的没什么大不了的,但前提是您正确处理加载过程和可能发生的任何错误。它会给您的项目增加一些复杂性,并且可能需要一些额外的思考,但我会认真考虑将其作为一种选择。有关详细信息,请参阅www.senocular.com/flash/tutorials/contentdomains/?page=2上的“应用程序域继承”部分。

于 2012-02-14T22:49:07.570 回答
1

我可能遗漏了一些东西,但这不是使用 -include-libraries 而不是编译器的 library-path 选项的情况,这就是 adobe doc 关于该选项的说法

将 SWC 文件中的所有类链接到生成的应用程序 SWF 文件,无论它们是否被使用。

将此选项与仅包含那些在编译时引用的类的 library-path 选项进行对比。

Adobe 文档

我对这一切都不熟悉,所以当你在火焰中击落我时要温柔:)

于 2014-06-21T05:30:15.910 回答
0

您可以在 ActionScript 属性中提供 assets.swc 文件的路径,该路径应该可以在运行时工作并加载资产。

于 2010-06-08T06:53:20.623 回答
0

在 flex 中,当您可以访问编译器选项时,您可以使用: -include YourClass 强制从 swc 链接该类,即使它没有从主 swf 引用。

但我不知道你是否可以从 flash cs4 更改编译器选项...

于 2013-07-17T12:16:33.403 回答