我正在尝试使用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
。但是我无法做到这一点在我宣布定义时,其值不会明确知道的任何东西。
有没有人有这样的运气?
答案 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作为构建环境非常糟糕,原因就像你提到的那样