Flex编译时间常量 - 时间戳

时间:2010-02-20 23:09:13

标签: flex flex3 flexbuilder

我正在尝试使用Flex Compile Time Constants来包含构建SWF的日期和时间(源代码控制修订版/时间戳,例如SVN:关键字不足以满足我们的需求,我们需要知道实际的构建时间,而不是提交时间。)

我尝试过使用动作脚本(就像文档建议你应该可以的那样):

-define+=COMPILE::Timestamp,"new Date()"

但是这给出了“配置值的初始化器必须是编译时常量”

我已尝试将其放到shell并使用date命令(使用各种单引号和双引号配置),例如:

-define+=COMPILE::Timestamp,`date +%Y%m%d%H%M%S` 

我只能使用简单的字符串和简单的常量表达式(例如,我可以4-2并且在运行时它将是2。但是我无法做到这一点在我宣布定义时,其值不会明确知道的任何东西。

有没有人有这样的运气?

4 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,并以using this blog post为起点。为我工作得很好。只需要将类的几个部分更新为flex 4.将日期从符合的swf中拉出来。

答案 1 :(得分:0)

您的问题的关键很可能在Adobe的以下声明中引用编译时间常量: 常量可以是布尔值,字符串或数字,也可以是在编译​​时可以在ActionScript中计算的表达式。

我认为时间戳在编译时不可用。

但是,您可以尝试使用字符串(类似这样)

public function GetUnixTime():String{
var myDate:Date = new Date();
var unixTime:Number = Math.round(myDate.getTime()/1000);
return unixTime.toString();
}

另一个想法是你可以从编译文件中获取信息。

希望这有帮助。

答案 2 :(得分:0)

经过广泛的研究,我得出的结论是,这根本不可行。

答案 3 :(得分:0)

如果您不使用FlexBuilder进行构建,则可以非常轻松地完成构建。

我在Maven中使用FlexMojos做了类似的事情。

在相关的配置部分:

                <definesDeclaration>
                    <property><name>BUILD::buildVersion</name><value>"${project.version}"</value></property>
                    <property><name>BUILD::buildRevision</name><value>"${buildNumber}"</value></property>
              <property><name>BUILD::buildTimestamp</name><value>"${timestamp}"</value></property>
                </definesDeclaration>

FlexBuilder作为构建环境非常糟糕,原因就像你提到的那样