我在一個教育軟件中工作,主要是使用Flash AS3開發的,我們有一個天文臺,通過不同的用戶顯示不同的值。 示例:兩位用戶同時啓動計時器,但在使用幾分鐘後,他們的值會有所不同。如何創建一個精確的天文鐘,匹配實時?
當前的實現使用Timer類,導致這種情況發生,顯然是由於每臺計算機的平均速度不同。
我已經有了一個想法,但我想有一些理論上的建議。 在此先感謝。
我在一個教育軟件中工作,主要是使用Flash AS3開發的,我們有一個天文臺,通過不同的用戶顯示不同的值。 示例:兩位用戶同時啓動計時器,但在使用幾分鐘後,他們的值會有所不同。如何創建一個精確的天文鐘,匹配實時?
當前的實現使用Timer類,導致這種情況發生,顯然是由於每臺計算機的平均速度不同。
我已經有了一個想法,但我想有一些理論上的建議。 在此先感謝。
Timer類不是很準確。從文檔:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/Timer.html
根據SWF文件的幀速率或運行時環境(可用內存和其他因素),運行時可以派員在稍有偏差的間隔事件。例如,如果SWF文件設置爲以每秒10幀(fps)(即100毫秒間隔)播放,但是您的計時器設置爲在80毫秒內觸發事件,則該事件將分派到接近100毫秒的時間間隔。內存密集型腳本也可能會抵消事件。
如果您正在尋找自應用程序啓動以來的相對時間,請使用flash.utils.getTimer()。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/utils/package.html#getTimer%28%29
如果您想要做更復雜的計時,您可以使用Date類。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Date.html
我的解決方案是在定時器啓動時存儲unix時間,然後我只使用Timer事件刷新並計算從開始以來經過的毫秒數。 –
將Timer類與使用Date對象結合起來。 –