1

我使用的是 Adob​​e® Flash® Builder™ 4.6,以前的版本也存在这个问题。

出于某种原因,我正在使用

cls = applicationDomain.getDefinition(name) as Class;

获取对象的构造函数,然后创建我的模块类的实例。因此使编译忽略我的模块类,因为它们与我的主类无关。如何强制其他类也编译到我的 swf 或 swc 文件中?我没有找到可以调整编译选项的地方。

现在我用这种方式来解决我的问题,在程序入口的最开始。

if(1+1==3){
    //never be run but do make classes merge into swf files.
    new MyModule();
}

我有数百个这样的模块,我希望我能找到一种方法来永久解决这个问题

4

4 回答 4

2

您需要使用该类使其在 swf 中编译。
不是最好的方法,但

private var someVar:someClass;


使用“new”关键字将导致运行时为对象分配内存,因此您不想使用它。


整个加载模块和编译类都有代码味道。
你最好让模块中的类实现一个接口。

于 2012-11-09T14:31:01.927 回答
2

你可以试试这个

package
{
public class IncludeClasses
{
    import com.abc.db.Database;Database;
    import com.abc.logs.RemoteLogTarget; RemoteLogTarget;
    import com.abc.logs.LocalLogTarget; LocalLogTarget;
    import com.abc.exception.GlobalExceptionHandler; GlobalExceptionHandler;
    import com.abc.utils.NetConnectionMonitor;NetConnectionMonitor;
}
}
于 2012-11-10T07:49:27.327 回答
1

您需要至少一个对您的类的严格引用才能出现在项目中。我使用 Array 类型的静态变量来填充我需要的所有类,如果可以的话,我永远不会真正引用该数组。

private static var dummy:Array=[OneClass, AnotherClass, Class01, Etc];
于 2012-11-09T16:07:05.703 回答
0

您也可以通过设置编译器标志来做到这一点。 关于应用程序编译器选项

请参阅: 包含库库 [...]

仅包含作为 include-classes 编译器选项所包含的类的继承依赖项的类。

默认值为假。

这是一个高级选项。如果您正在创建自定义 RSL 并希望将尽可能多的类外部化,则可以使用此编译器选项。例如:

compc -include-classes mx.collections.ListCollectionView 
-include-inheritance-dependencies-only=true 
-source-path . -output lcv2 -directory
于 2014-11-26T20:51:03.530 回答