JavaScript 中是否有另一种方法可以使用日期对象获取以毫秒为单位的时间,或者至少有一种重用该对象的方法,而不必每次需要获取该值时都实例化一个新对象?我问这个问题是因为我试图用 JavaScript 制作一个简单的游戏引擎,并且在计算“增量帧时间”时,我必须每帧创建一个新的 Date 对象。虽然我不太担心这对性能的影响,但我对该对象返回的确切时间的可靠性存在一些问题。
我在动画中每隔一秒左右就会出现一些奇怪的“跳跃”,我不确定这是否与 JavaScript 的垃圾收集有关,或者与 Date 对象更新如此快时的限制有关。如果我将增量值设置为某个常数,那么动画就会非常平滑,所以我相当确定这种“跳跃”与我获取时间的方式有关。
我可以给出的唯一相关代码是我计算增量时间的方式:
prevTime = curTime;
curTime = (new Date()).getTime();
deltaTime = curTime - prevTime;
在计算运动/动画时,我将一个常数值乘以增量时间。
如果无法避免使用 Date 对象获取以毫秒为单位的时间,则可以使用一个函数来递增变量(即自游戏开始以来以毫秒为单位的经过时间),并使用 SetTimer 函数以以下速率调用该函数:每毫秒一次是一个高效可靠的替代方案吗?
编辑:我现在已经在不同的浏览器中测试了我的代码,似乎这种“跳转”实际上只在 Chrome 中明显,而不是在 Firefox 中。但如果有一种方法可以在两种浏览器中工作,那就太好了。
Try 日期.now() https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/now.
跳过很可能是由于垃圾收集造成的。通常,可以通过尽可能多地重用变量来避免垃圾收集,但我不能具体说明可以使用哪些方法来减少垃圾收集暂停。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)