计时器0.02,结果log打印出来dt都达到0.03,差这么多???

差这么多么?

掉帧了吧

没有,本来也是做测试用的,场景里东西少的可怜
而且是稳定的 0.03

1秒一下好像有问题,用setInterval吧

这个可以用在native上么

有大佬关注下么

求帮忙~

基于现实时间0.02秒?试试这个

last = new Date().getTime();
dt = 1000 / 60; //自己改
accumulator = 0;

//animationLoop每帧执行

function animationLoop() {
now = new Date().getTime();
passed = now - last;
last = now;
accumulator += passed;
while (accumulator >= dt) {
update(dt);
accumulator -= dt;
}
}

1赞

谢谢

//animationLoop每帧执行
这个我写了,好像不会运行到这··········
这个是动画相关的?

哦,这是因为 60fps 下每帧时间是 0.016 s,那么一帧达不到 0.02 s,所以会顺延到下一帧触发,也就是 0.032 s 时触发。这是帧回调频率决定的:计时器回调最高精度就是 0.016 s,无法达到你想要的精度。

原来是顺延到下一帧触发··········
懂了,原来用cocos-lua的,是这一帧出发的,
最高精度0.016 s,0.02比0.016要大···········