Javascript NodeJS中requestAnimationFrame()的服务器端实现
关于广泛使用的Javascript NodeJS中requestAnimationFrame()的服务器端实现,javascript,node.js,client,server,Javascript,Node.js,Client,Server,关于广泛使用的requestAnimationFrame()函数,我有一些问题。最近,我在多人游戏中遇到了一些实现,他们在客户端而不是服务器端使用它 这样做有什么好处吗 您能给我介绍一下NodeJS中的任何“最佳实践”服务器端实现吗 更新 我对动画和游戏循环感到有点困惑-我要找的是NodeJS=>中的一个实现,例如setInterval 示例-客户端实现 (函数(){ var lastTime=0; var供应商=['ms','moz','webkit','o']; 对于(var x=0;x您将
requestAnimationFrame()
函数,我有一些问题。最近,我在多人游戏中遇到了一些实现,他们在客户端而不是服务器端使用它
setInterval
示例-客户端实现
(函数(){
var lastTime=0;
var供应商=['ms','moz','webkit','o'];
对于(var x=0;x
这样做有什么好处吗
在客户机中,有。虽然setTimeout
及其好友在计时器队列中运行-requestAnimationFrame
与浏览器的页面呈现(绘制)同步,因此当您使用它时,不会出现抖动,因为您告诉它要绘制的内容与浏览器的绘制是同步的
通常游戏有两个循环-渲染循环(绘制内容)和游戏循环(事物所在的逻辑)。第一个在requestAnimationFrame
中,另一个在setTimeout
中-两者都必须运行得非常快
这是保罗·爱尔兰的作品
您能给我介绍一下NodeJS中的任何“最佳实践”服务器端实现吗
由于服务器不渲染任何图像,因此服务器中的多边形填充requestAnimationFrame
没有意义。您将在Node/io.js中使用setImmediate
,在客户端中使用requestAnimationFrame
简单地说-添加requestAnimationFrame是为了解决服务器中不存在的问题(图形数据的无抖动渲染)。在服务器应用程序中“动画帧”是什么意思?我的错误,我的意思是游戏周期,而不是动画循环本身-我应该更清楚。我所寻找的是在NodeJS中实现服务器端游戏循环。我确实需要在NodeJS中为物联网设备渲染某些内容。@stevemao您仍然不会在Node中渲染它-您将使用物联网设备为绘制对象提供的任何绑定来渲染它,这可能会提供requestAnimationFrame。你也是stevemao所以你知道这让我想知道你想表达什么观点?那个节点不仅仅在服务器上运行?我正在尝试用Arduino为我的led灯设置动画。查看johnny five的源代码,它似乎在使用
setImmediate
>您将使用IoT设备为绘制对象提供的任何绑定来渲染它,这可能会提供requestAnimationFrame。如果nodejs正在为设备供电以进行渲染,该怎么办?假设它真的没有大脑……谢谢本杰明,你的解释很有道理。不幸的是,npm上似乎还没有提供彩色动画的库:(嗨!请添加一些关于如何解决OP问题的解释。通常不鼓励只发布代码答案,因为它们不能帮助OP或未来的访问者理解答案。谢谢!——来自评论。
if(!window.requestAnimationFrame)
window.requestAnimationFrame = window.setImmediate
if(!window.requestAnimationFrame)
window.requestAnimationFrame = window.setImmediate
function requestAnimationFrame(f){
setImmediate(()=>f(Date.now()))
}