调用更新方法与具有setInterval

cor*_*zza 5 javascript design-patterns

在我的游戏引擎中,有些对象需要定期更新.例如,场景可以降低其alpha值,因此我设置了一个间隔来执行它.此外,相机有时需要稍微摇晃,这需要对旋转属性进行插值.

我看到有两种方法可以解决这些问题:

  1. 有一个update()方法调用所有其他对象的更新方法.对象跟踪自上次更新以来的时间并采取相应措施.

  2. setInterval为每个对象的更新方法执行a .

什么是最好的解决方案,为什么?

Hal*_*yon 4

setInterval不遵循时钟,它只是在事件进入时对其进行排序。浏览器倾向于在事件之间保留至少一些少量的时间。因此,如果您有 10 个事件都需要在 100 毫秒后触发,您可能会看到最后一个事件在 200 毫秒后触发。(这很容易测试)。

从这个意义上说,只有一个事件(并对所有对象调用更新)比让每个对象设置自己的时间间隔更好。虽然可能还有其他考虑因素,但至少出于这个原因,选项 2 是不可行的。

这里有更多关于setInterval 浏览器如何确定 setInterval 应使用什么时间?