【问题标题】:Get compile-time variable at runtime在运行时获取编译时变量
【发布时间】:2010-09-14 20:11:14
【问题描述】:

我正在尝试使用“定义”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.

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

【问题讨论】:

    标签: actionscript-3 namespaces compile-time-constant


    【解决方案1】:

    编译时常量在运行时不可用。它们仅在编译时可用。

    如果您需要将其值作为命名空间 const,那么正确的解决方案是按照您的做法“硬编码”它。

    【讨论】:

    • 谢谢 :) 我想我只是希望可以像 SWF 文件中的定义一样查找它。
    • @tkk:我想知道你为什么需要这样做。如果您在代码中的任何位置都需要该值,则只需编写 var something:String = NAMES::PluginCompileTime;。我不明白为什么你需要一个全局命名空间中值的显式副本。
    • 嗯,一个原因是必须对其中的值进行硬编码会引入对代码库的编译时间依赖性。如果我不需要硬编码,可以使用默认值来代替,使我的编译更加“可变”。 :)
    猜你喜欢
    • 2010-10-28
    • 1970-01-01
    • 2021-03-10
    • 1970-01-01
    • 2016-08-24
    • 2014-09-14
    • 1970-01-01
    • 2016-12-06
    • 1970-01-01
    相关资源
    最近更新 更多