【发布时间】:2013-06-05 10:32:58
【问题描述】:
我在 javascript、Canvas 和 Chrome/Safari 中创建了一个简单的二进制时钟,即使我每秒多次在画布上绘图,但它每秒只更新一次屏幕。
FireFox 会在我绘制到画布的瞬间进行更新,我认为我的代码是高效的(活动监视器显示,在动画运行时浏览器正在使用 5% 到 10% 的单个 CPU 内核)。
如何让 webkit 浏览器更频繁地更新?我的实际代码在 jsfiddle:
但基本上这就是我正在做的事情:
function updateCanvas()
{
if (!canvasNeedsUpdating()) {
return;
}
var ctx = blockView.getContext("2d");
ctx.clearRect(0, 0, width, height);
if (canvasNeedsFill()) {
ctx.fillStyle = "rgba(255,255,255,1.0)";
ctx.fillRect(0, 0, width, height);
}
window.setTimeout(updateCanvas, 10);
}
【问题讨论】:
-
我确认您的发现。最近几个 webkit 版本的画布性能很差,也有一些意想不到的故障。 :(
-
试一试...如果您使用 canvas.width=canvas.width 而不是 ctx.clearRect 清除它会加快速度吗?
-
@markE 我试过了,但没有帮助。我不认为这是性能问题,我认为这是 WebKit 中的故意行为。
标签: javascript performance canvas webkit