Javascript 如何设置网格动画以在不冻结/跳跃的情况下滑动?
我的画布上有两个网格Javascript 如何设置网格动画以在不冻结/跳跃的情况下滑动?,javascript,css,three.js,Javascript,Css,Three.js,我的画布上有两个网格mesh和mesh2。我将mesh2.position.x设置为10,使其位于网页的右侧。我的页面上有一个左箭头按钮,单击该箭头时,我希望mesh2滑动到0的位置,以便将其置于网页的中心 document.getElementsByClassName("arrow left")[0].addEventListener("click", slideAnimation, false); function slideAnimation() { var pos =
mesh
和mesh2
。我将mesh2.position.x
设置为10
,使其位于网页的右侧。我的页面上有一个左箭头按钮,单击该箭头时,我希望mesh2
滑动到0
的位置,以便将其置于网页的中心
document.getElementsByClassName("arrow left")[0].addEventListener("click", slideAnimation, false);
function slideAnimation() {
var pos = mesh2.position.x;
var id = setInterval(frame, 10);
function frame() {
if (pos <= 0) {
clearInterval(id);
} else {
pos -= .8;
mesh2.position.x = pos;
}
}
}
但是,滞后仍然存在。有人知道在画布上平滑滑动网格的解决方案吗?我的目标是做一些类似于本网站主页的事情:尝试使用
requestAnimationFrame
而不是setInterval
。好的,谢谢,这样更好。如果你留下一个答案,我会接受。我并不是说这项技术对你来说并不新鲜——每个人都是第一次异步遇到事情——但是使用requestAnimationFrame
进行平滑动画(以及它比setInterval
的好处)已经得到了很好的讨论,three.js
示例也大量使用了requestAnimationFrame
。在我看来,我并不认为有必要给出一个完整的答案,除非我们能找到一个能回答平滑动画这一广义问题的答案,让我们把这个问题标记为一个重复的问题。
canvas {
width: 2500px;
}