在AS3中,当值大于最大int时,getTimer()将返回什么

时间:2012-11-15 19:18:53

标签: actionscript-3 flash int

Per Adobe getTimer()是:

  

用于计算相对时间。对于处理ActionScript 3.0的Flash运行时,此方法返回自ActionScript 3.0(AVM2)的Flash运行时虚拟机启动以来经过的毫秒数。

因为getTimer返回一个int:

  

int类允许您使用表示32位有符号整数的数据类型。由int类表示的值范围是-2,147,483,648(-2 ^ 31)到2,147,483,647(2 ^ 31-1)

在2,147,483,647毫秒之后getTimer()会返回什么?我认为这大约是连续运行24.85天。不是通常情况,而是数字标牌和信息亭环境完全可行。

在这些情况下应该避免使用getTimer()吗? Date.UTC()对象是否会更安全,因为它返回一个Number类型?

1 个答案:

答案 0 :(得分:1)

我的猜测是它会循环回来,就像int一样。

var nt:int = int.MAX_VALUE + 10; //outputs -2147483639
var nt2:int = int.MIN_VALUE + 9; //outputs -2147483639

如您所见,MAX + 10MIN + 9相同(显然必须考虑最小值本身)。因此,当你达到24天的标记时,它可能看起来像-24天并且开始重新开始。

函数本身也有可能不会返回实际时间,但这些内容也是如此:

return timer % int.MAX_VALUE;

这将使用简单模数将每次达到MAX_VALUE时的时间重置为0。老实说,如果这就是他们所做的事情,那就不会感到惊讶(因为你显然不想要负运行时间)