【发布时间】:2017-11-16 09:12:49
【问题描述】:
所以我一直在做一个项目,突然间我的动画和一切都会运行得非常慢。甚至我的 Timeout 也落后了数百毫秒。现在我找到了造成这种情况的原因,但我想知道是为什么?
这是我的原始代码:
ctx.save();
ctx.beginPath();
ctx.arc(c.width / 2, - 7.5, c.width / 2, 0, Math.PI * 2, false);
ctx.clip();
ctx.beginPath();
// Mark out some path
ctx.stroke();
ctx.restore;
然后我发现restore后面的括号不见了:
ctx.save();
ctx.beginPath();
ctx.arc(c.width / 2, - 7.5, c.width / 2, 0, Math.PI * 2, false);
ctx.clip();
ctx.beginPath();
// Mark out some path
ctx.stroke();
ctx.restore();
现在它就像一个魅力一样神奇地发挥作用。有人知道为什么吗?我在 chrome 中没有遇到问题,我使用的是 firefox 版本 53.0.3(32 位)。
哦,顺便说一句,我正在播放一个带有很多过滤器的 AoudioBufferedSourceNode,尽管它一直在正常播放。
【问题讨论】:
-
它从未在您的第一段代码中执行恢复
-
ctx.save()保存画布的当前旋转和坐标。ctx.restore()将画布移动到上次保存的旋转和坐标。您实际上并没有移动画布,从而使操作变得多余,但它仍然必须计算答案,这需要计算能力,这需要时间。
标签: javascript performance animation canvas html5-canvas