【发布时间】:2011-07-01 03:38:01
【问题描述】:
我的问题是我的 javascript/canvas 在低端计算机上运行非常缓慢(即使它们可以运行更具挑战性的 canvas scripts 流畅)。 我正在尝试根据用户选择做一个简单的动画。
当直接在画布上绘图被证明太慢时,我在隐藏的画布上绘图并将所有帧(getImageData)保存到data,然后调用animate(1);在我的真实画布上绘图。
function animate(i){
if(i < 12){
ctx2.putImageData(data[i], 0, 0);
setTimeout(function(){animate(i+1)},1);
}
}
但即使这样也太慢了。我该怎么办?
【问题讨论】:
-
我相信 Canvas 实现使用后台缓冲区,因此您实际上不会通过隐藏的 canvas 对象获得任何东西。
-
“有些电脑很慢,我该怎么办?” a) 尽你所能使你的代码更有效率,b) 接受你所尝试的限制去做。到目前为止,您对以下答案的回答表明您不愿意执行上述任何一项。
-
先从简单开始。编写一个
for循环,它只循环通过i并执行putImageData。那有多快?如果它不够快,那么putImageData告诉你什么?
标签: javascript optimization html canvas performance