JavaScript中是否可以使用date对象以毫秒为单位获取时间,或者至少有一种重用该对象的方法,而不必每次需要获取该值时都实例化新对象?我之所以这样问,是因为我试图用JavaScript创建一个简单的游戏引擎,并且在计算“增量帧时间”时,我必须在每个帧中创建一个新的Date对象。尽管我不太担心这种性能的影响,但是我对该对象返回的确切时间的可靠性存在一些问题。
在动画中,我每秒大概会收到一些奇怪的“跳跃”,而且我不确定这是否与JavaScript的Garbage Collection或更新时的Date对象的限制有关。如果我将delta值设置为某个常数,那么动画就可以完美平滑,因此我可以肯定,这种“跳跃”与获取时间的方式有关。
我唯一可以给出的相关代码是计算增量时间的方式:
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
在计算运动/动画时,我将常数值与增量时间相乘。
如果无法避免通过使用Date对象获取以毫秒为单位的时间,则该函数将增加一个变量(即游戏开始以来经过的时间(以毫秒为单位)),然后使用SetTimer函数以每毫秒一次是有效且可靠的替代方法吗?
编辑:我现在已经在不同的浏览器中测试了我的代码,并且似乎“跳”实际上仅在Chrome中可见,而在Firefox中不明显。但是,如果在两种浏览器中都可以使用一种方法,那仍然会很好。
Date.getMilliseconds当前秒仅返回毫秒(即0到999)有关?您没有在示例中使用此功能,但是可能是在其他地方或其他分支上使用了此功能?