Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS中requestAnimationFrame()的服务器端实现_Javascript_Node.js_Client_Server - Fatal编程技术网

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()
函数,我有一些问题。最近,我在多人游戏中遇到了一些实现,他们在客户端而不是服务器端使用它

  • 这样做有什么好处吗
  • 您能给我介绍一下NodeJS中的任何“最佳实践”服务器端实现吗
  • 更新 我对动画和游戏循环感到有点困惑-我要找的是NodeJS=>中的一个实现,例如
    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()))
    }