Javascript画布上的游戏刷新问题glitchy/flash,使用SetInterval

Javascript画布上的游戏刷新问题glitchy/flash,使用SetInterval,javascript,canvas,setinterval,requestanimationframe,game-loop,Javascript,Canvas,Setinterval,Requestanimationframe,Game Loop,需要画布刷新方面的帮助,非常容易出错和闪烁,我正在使用setInterval。不知道如何使用requestanimation frame,任何帮助都很好 //启动整个游戏 function fullLoader() { setInterval(drawPoke, fps); setInterval(drawHaunt, fps); setInterval(drawChar, fps); setInterval(drawDusk, fps); s

需要画布刷新方面的帮助,非常容易出错和闪烁,我正在使用setInterval。不知道如何使用requestanimation frame,任何帮助都很好

//启动整个游戏

function fullLoader() {     

    setInterval(drawPoke, fps);
    setInterval(drawHaunt, fps);
    setInterval(drawChar, fps);
    setInterval(drawDusk, fps);
    setInterval(refresh, 1000/30);
}

function refresh() {

    con.clearRect(0, 0, canvas.width, canvas.height)
}
该功能是图形或png图像,并以设置为30的fps间隔设置为relad。

永不.ever。。使用
setInterval
制作动画! 使用
requestAnimationFrame
,因为它与显示速率同步,并确保对DOM(画布)所做的更改不会移动到显示,直到显示硬件位于帧之间

函数fullLoader(){
requestAnimationFrame(mainLoop);//获取第一帧
}
//此主循环每1/60秒调用一次(如果在1/60秒以下返回)
//如果渲染时间小于1/60,则必须使用
//将速度保持在1/30秒所需的时间。搜索如何保持速度。
函数mainLoop(time){//time由浏览器给出,单位为ms 1/1000
//精确到1/1000000
刷新();
drawPoke();
抽丝缠绕();
drawChar()
黄昏();
requestAnimationFrame(mainLoop);//获取下一帧
}
函数刷新(){
con.clearRect(0,0,canvas.width,canvas.height);
}

> StEnTimes只对EythUsMs参数尽最大努力执行函数。这可能意味着您的函数按不同的顺序调用。考虑将所有的渲染任务按需要的顺序放置在一个函数中,并通过StTalk调用它。谢谢!他的作品非常完美!非常感谢