提问者:小点点

为什么总是重画整个画布?


我在这里读了一个演示基本io游戏的教程:https://victorzhou.com/blog/build-an-io-game-part-1/,遇到了一个关于在每一帧上呈现整个画布的问题。 再搜索一下,看起来最好在每一帧重新绘制整个画布。 我正在试图理解为什么总是重画整个画布,而不是只更新我们感兴趣的形状/区域? 有人能不能指出什么是最好的办法围绕这一点,什么是利弊相同。

另外,如果我们需要在某个特定区域上有一些像短动画这样的粒子,或者任何一种带有一些随机性的动画(例如:fireworks.js),那么当我们渲染整个帧时该如何实现呢?

谢了。


共2个答案

匿名用户

这就是画布的工作原理。 每一帧,你让整个画布空白,然后在上面画一些东西。 例如,所有的视频游戏工作原理相同,只有画布是你的屏幕。 当每秒重绘超过20X时,看起来很平滑。

一个动画当然可以占用不止一帧。 你必须事先计划动画(整个随机序列),然后再平滑地重播。

不管怎么说,通常在使用任何画布库时,您不必处理更低级别的动画。 例如,我最喜欢的画布库:https://p5js.org//为您处理一切。

匿名用户

严格地说,你可以“修补”画布而不清除它,但在你的情况下,我不确定这是你想要的。

以下是一些关于这个问题的精彩文章https://www.html5rocks.com/en/Tutorials/canvas/performance/和https://developer.mozilla.org/en-us/docs/web/api/canvas_api/Tutorial/basic_animations