flex – 强制SWC中所有类的编译时链接

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

在我将资产外部化之前,我通过使用getDefinitionByName获取类来动态实例化嵌入声音的Sound对象.

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

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

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

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

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

解决方法

不幸的是,我不这么认为.我希望这在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;

相关文章

一:display:flex布局display:flex是一种布局方式。它即可以...
1. flex设置元素垂直居中对齐在之前的一篇文章中记载过如何...
移动端开发知识点pc端软件和移动端apppc端软件是什么,有哪些...
最近挺忙的,准备考试,还有其他的事,没时间研究东西,快周...
display:flex;把容器设置为弹性盒模型(设置为弹性盒模型之后...
我在网页上运行了一个Flex应用程序,我想使用Command←组合键...