2012-11-15 27 views
4

Adobe getTimer(大)是:在AS3究竟會getTimer()返回當值大於最大INT

用於計算相對時間。對於處理ActionScript 3.0的Flash運行時運行時,此方法返回自Flash 3.0運行時虛擬機(AVM2)啓動以來經過的毫秒數。

由於getTimer返回INT其中:

通過int類可使用表示爲32位有符號整數數據類型。值由int類表示的範圍是2,147,483,648(-2^31)2147483647(2^31-1)

什麼會把2147483647毫秒後getTimer()的返回?這大概是連續24.85天的跑步,我認爲。不是一般情況,而是數字標牌和信息亭環境完全可行。

在這些情況下應該避免getTimer()? Date.UTC()對象會更安全,因爲它返回一個Number類型?

+0

我會在25天后回來,要知道正確的答案! – Eduardo

+0

太棒了!我沒有額外的機器,否則我會加入你。 –

+4

我會使用Date.UTC()不管。您必須執行檢查以查看時間,重置另一個自定義屬性以防止溢出。使用Date.UTC()可以捕獲初始開始時間,只需從新時間中減去它即可獲得您的價值。 – Gone3d

回答

1

我的猜測是它會循環回自己,就像int一樣。

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

正如你所看到的,MAX + 10相同MIN + 9(必須考慮的最小值本身,很明顯)。所以當你達到24天時,它可能看起來像-24天,並開始恢復。

還有一個機會,函數本身沒有返回的實際時間,但事情沿着這些路線:

return timer % int.MAX_VALUE; 

會在每次打MAX_VALUE爲0時重新設定時間,使用簡單模量。我真的不會感到驚訝,如果這是他們所做的事情(因爲你不想要負面的運行時間,顯然)

+0

我會盡可能接受這個答案。 –