使用 Flash CS4,我正在制作一个有十几个声音和几个音乐轨道的游戏。为了减少发布/编译时间,我将声音和音乐移到了(外部)SWC 中,该 SWC 位于项目的“库路径”中。这有效,但有一个警告......
在我将 Assets 外部化之前,我一直通过使用 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 文件,无论它们是否被使用。”
(此外,对我来说,重要的是所有 Assets 都包含在一个已编译的 SWF 中。运行时链接不是我所追求的。)
最佳答案
不幸的是,我不这么认为。我希望这在 CS5 中得到修复,但我不会打赌......
当前(加重)标准是在您的 SWC 中有一个 list 类,它引用库其余部分中的所有根类:
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;
关于apache-flex - 强制编译时链接 SWC 中的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2994553/