【问题标题】:HTML5 animation in canvas画布中的 HTML5 动画
【发布时间】:2011-10-24 14:56:43
【问题描述】:

是否有其他方法可以在不使用 setInterval() 或 setTimeout() 的情况下为在画布中移动的对象设置动画?

原因是因为在使用 useInterval() 时它会随着时间的推移而滞后。我不知道为什么它也滞后。

我尝试删除 setInerval(),一切正常,没有延迟,但没有动画。

【问题讨论】:

    标签: html animation canvas


    【解决方案1】:

    有谁知道是否有其他方法可以在不使用 setInterval() 或 setTimeout() 的情况下为在画布中移动的对象设置动画。

    是的。还有requestAnimationFrame,但不是在所有浏览器上。

    此外,尝试将间隔设置为更小和更大的值,看看是否可以减少跳跃。

    另外, 确保您的绘图循环中发生的事情尽可能少。延迟可能是您自己的错。 Canvas 对性能方面非常敏感,它是否保持快速运行取决于您。

    【讨论】:

    • 是的,较大的间隔值有助于解决问题。但动画会跳动(不那么流畅)
    • 嗯是的。这可能是由于循环中的大量对象。无论如何谢谢:D
    • 猜猜解决问题的唯一方法是设置更大的间隔
    • 如果您将代码发布到某个地方,我可以查看它并为您提供性能指针
    【解决方案2】:

    定义滞后,你的意思是有点神经质吗?因为如果是这样,您设置的间隔是错误的,我使用这两种方法为大量画布设置了动画,并且 afaik 没有其他方法。

    【讨论】:

    • 没有那么跳跃,因为间隔很短 setInterval(function() { draw(); }, 100);
    • 当我第一次运行 Web 应用程序时它运行良好,但随着时间的推移,它开始滞后。好像它正在使用大量内存
    • 递归是什么意思?
    • 在循环中,我将清除当前画布,然后使用 onClick 事件绘制一些图像,然后设置新的 x,y 以对其进行动画处理。
    • 而且每当我点击动态图像时,它似乎会使用更多的内存和延迟。
    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 2012-05-15
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2021-03-26
    相关资源
    最近更新 更多