2010-09-14 53 views
0

我正尝试使用“define”mxmlc编译器选项将编译时常量嵌入到我的SWF文件中。在运行时获取编译时变量

<mxmlc ...> 
    <define name="NAMES::PluginCompileTime" value="Hello World!"/> 
</mxmlc> 

我可以访问此变量,如果我“硬编码”到我的代码库,像这样:

public static const PLUGIN_COMPILED_TIME:String = NAMES::PluginCompileTime; 

不过,我想能够使用的东西在运行时要做到这一点像getDefinitionByName( ):

var value:* = flash.utils.getDefinitionByName("NAMES::PluginCompileTime"); 

这引发以下错误:

ReferenceError: Error #1065: Variable PluginCompileTime is not defined. 

有谁知道在运行时在命名空间中加载编译时常量的方法吗?

回答

1

编译时常量在运行时不可用。它们只能在编译时使用。

如果您需要将它的值作为名称空间const,那么正确的解决方案就是像您一样“硬编码”它。

+0

谢谢:)我想我只是希望能够把它看作是SWF文件中的定义。 – 2010-09-16 15:54:23

+0

@tkk:我想知道为什么你需要这样做。如果你在代码中的任何一点都需要这个值,你可以直接写'var something:String = NAMES :: PluginCompileTime;'。我看不出为什么你需要在命名空间全局中显式拷贝值。 – Gunslinger47 2010-09-16 19:05:57

+0

那么,其中一个原因是,必须对其中的值进行硬编码,从而将编译时间依赖性引入代码库。如果我不需要硬编码,可以使用默认值,这样可以让我的编译更加“可变”。 :) – 2010-09-20 00:04:01