在动作脚本中定义

时间:2010-07-07 14:03:42

标签: actionscript-3 flex compilation const

我正在尝试将构建号从Hudson传递到Flex应用程序。

我在条件编译中找到了Adobe的文档(http://livedocs.adobe.com/flex/3/html/help.html?content=compilers_21.html),似乎应该解决它但我必须遗漏一些东西。

所以在我的ant构建文件中,我有: -

<mxmlc
        file="${app.dir}/${application.name}.mxml"
        output="${dist.dir}/${application.name}.swf"
        context-root="${application.name}"
        debug="true"
        locale="${locales}"
        allow-source-path-overlap="true">
        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/>
        <compiler.library-path dir="${lib.dir}" append="true">
            <include name="*.swc" />
        </compiler.library-path>
        <define name="BUILD::BuildNumber" value="'20100707.800'"/>
        <source-path path-element="${src.dir}"/>
        <source-path path-element="${cfg.dir}"/>
        <source-path path-element="${locale.dir}" />
</mxmlc>

然后我试图用

检索
public static const buildNumber:String = BUILD::BuildNumber;

然而,编译器拒绝使用:

  

SomeModel.as(31):col:47错误:访问未定义的属性BUILD       [mxmlc] private static const _buildNumber:String = BUILD :: BuildNumber;

有什么建议吗?

4 个答案:

答案 0 :(得分:2)

这里的其他建议的组合似乎有效。

这应该放在你的build.xml中(假设你的build.xml在此之前已经为BUILD_NUMBER分配了一个值):

<mxmlc>
    ...
    <define name="CONFIG::build" value="&quot;${BUILD_NUMBER}&quot;" />
    ...      
</mxmlc>

请注意&quot;没有任何引号的使用。另请注意,您可以将此语法与compc。

一起使用

然后你的动作脚本代码可以是这样的:

public static const buildNumber:String = CONFIG::build;

我认为您不一定需要使用CONFIG命名空间,但它是一种流行的约定。

答案 1 :(得分:1)

答案 2 :(得分:0)

LaurynasStančikas发表评论说你应该使用&quot;

  

使用Ant传递字符串(使用时)   mxmlc任务),使用&quot;。例如:

    <compiler.define name="NAMES::AppName" value="&quot;'FooBar'&quot;" />

你试过吗?

答案 3 :(得分:0)

我刚用引号解决了javascript flashvars问题,这启发了“尝试这个”的想法:

尝试转义:

&lt; compiler.define name =“NAMES :: AppName”value =“\'FooBar \'”/&gt;